Compare commits

..

15 Commits

Author SHA1 Message Date
fc2d9292c2 change typo label 2024-08-22 17:25:43 +07:00
74d564e303 edit query and graph component 2024-08-22 16:08:05 +07:00
d1b04676a7 add split string func 2024-08-15 16:18:55 +07:00
31b2d6c793 edit graphic bar title, order, color 2024-08-15 15:50:59 +07:00
72c7e714f5 add detail pemeriksaan 2024-08-14 13:59:15 +07:00
35dd1b18fc add ganti password pic / pat 2024-08-13 13:48:59 +07:00
b9930f5662 add change password pic and pat service and handler 2024-08-12 15:43:22 +07:00
4d80bf4ca8 v4 list rpt pat & pic 2024-08-09 17:36:04 +07:00
fcaa4d7858 change login be, edit query listing mcu 2024-08-09 11:35:30 +07:00
19e3269a6a add nama paket di tabel daftar peserta 2024-08-08 16:20:53 +07:00
02d5f2e39e add label data tidak ditemukan 2024-08-07 16:56:25 +07:00
55a2e1bbfd change query data graph tab 2024-08-07 14:56:07 +07:00
a729d6ab67 revice tab ordering service 2024-07-16 13:18:58 +07:00
938e6d60f1 add autologon, + generate password btn peserta dashboard pic 2024-07-13 15:37:44 +07:00
57d160b62a edit query 2024-07-10 14:04:46 +07:00
79 changed files with 6003 additions and 1113 deletions

View File

@@ -15,6 +15,13 @@ var IsLoggedIn = echojwt.WithConfig(
},
)
var IsAlreadyLogin = echojwt.WithConfig(
echojwt.Config{
SigningKey: []byte("--one_api-secret-2019-04-01"),
ErrorHandler: JWTErrorChecker,
},
)
func JWTErrorChecker(c echo.Context, err error) error {
return c.Redirect(http.StatusTemporaryRedirect, "/login")
}

View File

@@ -36,9 +36,9 @@ templ ShowChartFixed(idDiv string, udata string, width string, height string) {
script GenerateChartFixed(idDiv string, udata string, width string, height string) {
htmx.onLoad(function(elt) {
console.log("elt ",elt)
// console.log("elt ",elt)
var element = document.getElementById(idDiv);
console.log("element ",element)
// console.log("element ",element)
if (element) {
element.style.height = height;
element.style.width = width;
@@ -52,8 +52,48 @@ script GenerateChartFixed(idDiv string, udata string, width string, height strin
// var option_001 = JSON.parse(udata);
option[idDiv] = JSON.parse(udata);
console.log("option ", option)
// console.log("option ", option)
// myChart_001.setOption(option_001);
myChart[idDiv].setOption(option[idDiv]);
});
}
templ ShowChartResponsiveWidth(idDiv string, udata string, height string) {
<div id={ idDiv } class="mx-auto" style="width: 100%;"></div>
@GenerateChartResponsive(idDiv, udata, height)
}
script GenerateChartResponsive(idDiv string, udata string, height string) {
htmx.onLoad(function(elt) {
// console.log("elt ",elt)
var element = document.getElementById(idDiv);
// console.log("element ",element)
if (element) {
element.style.height = height;
}
var myChart = {};
var option = {};
// var myChart_001 = echarts.init(document.getElementById(idDiv));
myChart[idDiv] = echarts.init(element);
// var option_001 = JSON.parse(udata);
option[idDiv] = JSON.parse(udata);
// console.log("option ", option)
// myChart_001.setOption(option_001);
if (option[idDiv]['series']['radius']) {
option[idDiv]['series']['radius'] = ['30%', '55%'];
} else {
option[idDiv]['series'][0]['radius'] = ['30%', '55%'];
}
myChart[idDiv].setOption(option[idDiv]);
var resizeObserver = new ResizeObserver(function() {
myChart[idDiv].resize();
});
resizeObserver.observe(element);
});
}

View File

@@ -124,11 +124,11 @@ func ShowChartFixed(idDiv string, udata string, width string, height string) tem
func GenerateChartFixed(idDiv string, udata string, width string, height string) templ.ComponentScript {
return templ.ComponentScript{
Name: `__templ_GenerateChartFixed_a276`,
Function: `function __templ_GenerateChartFixed_a276(idDiv, udata, width, height){htmx.onLoad(function(elt) {
console.log("elt ",elt)
Name: `__templ_GenerateChartFixed_c5bf`,
Function: `function __templ_GenerateChartFixed_c5bf(idDiv, udata, width, height){htmx.onLoad(function(elt) {
// console.log("elt ",elt)
var element = document.getElementById(idDiv);
console.log("element ",element)
// console.log("element ",element)
if (element) {
element.style.height = height;
element.style.width = width;
@@ -142,12 +142,94 @@ func GenerateChartFixed(idDiv string, udata string, width string, height string)
// var option_001 = JSON.parse(udata);
option[idDiv] = JSON.parse(udata);
console.log("option ", option)
// console.log("option ", option)
// myChart_001.setOption(option_001);
myChart[idDiv].setOption(option[idDiv]);
});
}`,
Call: templ.SafeScript(`__templ_GenerateChartFixed_a276`, idDiv, udata, width, height),
CallInline: templ.SafeScriptInline(`__templ_GenerateChartFixed_a276`, idDiv, udata, width, height),
Call: templ.SafeScript(`__templ_GenerateChartFixed_c5bf`, idDiv, udata, width, height),
CallInline: templ.SafeScriptInline(`__templ_GenerateChartFixed_c5bf`, idDiv, udata, width, height),
}
}
func ShowChartResponsiveWidth(idDiv string, udata string, height 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_Var5 := templ.GetChildren(ctx)
if templ_7745c5c3_Var5 == nil {
templ_7745c5c3_Var5 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div id=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var6 string
templ_7745c5c3_Var6, templ_7745c5c3_Err = templ.JoinStringErrs(idDiv)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\chart\chart.templ`, Line: 62, Col: 19}
}
_, 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("\" class=\"mx-auto\" style=\"width: 100%;\"></div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = GenerateChartResponsive(idDiv, udata, height).Render(ctx, 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
})
}
func GenerateChartResponsive(idDiv string, udata string, height string) templ.ComponentScript {
return templ.ComponentScript{
Name: `__templ_GenerateChartResponsive_fa78`,
Function: `function __templ_GenerateChartResponsive_fa78(idDiv, udata, height){htmx.onLoad(function(elt) {
// console.log("elt ",elt)
var element = document.getElementById(idDiv);
// console.log("element ",element)
if (element) {
element.style.height = height;
}
var myChart = {};
var option = {};
// var myChart_001 = echarts.init(document.getElementById(idDiv));
myChart[idDiv] = echarts.init(element);
// var option_001 = JSON.parse(udata);
option[idDiv] = JSON.parse(udata);
// console.log("option ", option)
// myChart_001.setOption(option_001);
if (option[idDiv]['series']['radius']) {
option[idDiv]['series']['radius'] = ['30%', '55%'];
} else {
option[idDiv]['series'][0]['radius'] = ['30%', '55%'];
}
myChart[idDiv].setOption(option[idDiv]);
var resizeObserver = new ResizeObserver(function() {
myChart[idDiv].resize();
});
resizeObserver.observe(element);
});
}`,
Call: templ.SafeScript(`__templ_GenerateChartResponsive_fa78`, idDiv, udata, height),
CallInline: templ.SafeScriptInline(`__templ_GenerateChartResponsive_fa78`, idDiv, udata, height),
}
}

View File

@@ -0,0 +1,157 @@
package sidebaruserprofile
import (
"cpone/component/customtextfield"
"cpone/models"
"cpone/component/modal"
)
templ SidebarForm() {
<div>
<form
id="form-ganti-password"
class="form"
hx-post="/corp/dashboard_pic/gantipassword"
hx-target="#body-ganti-pass"
hx-swap="outerHTML"
hx-indicator=".formloading"
hx-on::before-request={ HandleFormBeforeRequest() }
hx-on::after-request={ HandleFormAfterGantiPass() }
>
@modalcomponent.Modal("modal-ganti-pass",
"Ganti Password",
ModalGantiPassword(),
ActionFormGantiPassword(),
CloseFormGantiPassword(),
)
</form>
</div>
}
templ ModalGantiPassword() {
<div id="body-ganti-pass">
@customtextfield.CustomTextFieldv2(models.CustomTextFieldv2Prm{ID: "oldPassID",
Name: "oldpassid",
Type: "password",
Placeholder: "Masukan password lama",
Label: "Password Lama",
})
@customtextfield.CustomTextFieldv2(models.CustomTextFieldv2Prm{ID: "newPassID",
Name: "newpassid",
Type: "password",
Placeholder: "Masukan password baru",
Label: "Password Baru",
})
@customtextfield.CustomTextFieldv2(models.CustomTextFieldv2Prm{ID: "reNewPassID",
Name: "renewpassid",
Type: "password",
Placeholder: "Masukan ulang password baru",
Label: "Ulangi Password Baru",
})
</div>
<script>
document.addEventListener('htmx:afterSwap', function(event) {
$('.selectpicker').selectpicker('refresh');
})
</script>
}
templ RetModalGantiPassword(
oldPass models.CustomTextFieldv2Prm,
newPass models.CustomTextFieldv2Prm,
renewPass models.CustomTextFieldv2Prm,
hxOnLoad templ.ComponentScript,
) {
<div id="body-ganti-pass" hx-on::load={ hxOnLoad }>
@customtextfield.CustomTextFieldv2(oldPass)
@customtextfield.CustomTextFieldv2(newPass)
@customtextfield.CustomTextFieldv2(renewPass)
</div>
<script>
document.addEventListener('htmx:afterSwap', function(event) {
$('.selectpicker').selectpicker('refresh');
})
</script>
}
templ ActionFormGantiPassword() {
<div>
<button
hx-on::after-request={ JSHideModal("#modal-ganti-pass") }
hx-post="/corp/dashboard_pic/tutupgantipassword"
hx-target="#body-ganti-pass"
hx-swap="outerHTML"
hx-indicator=".cancelloading"
type="button"
class="btn btn-outline-secondary font-weight-bolder rounded-lg mr-4 btnactcancel"
data-dismiss="modal"
>
<span class="htmx-indicator spinner-border spinner-border-sm cancelloading" role="status" aria-hidden="true"></span>
Batal
</button>
<button
type="submit"
class="btn btn-primary btn-shadow font-weight-bold rounded-lg btnactsavedata"
>
<span class="htmx-indicator spinner-border spinner-border-sm formloading" role="status" aria-hidden="true"></span>
Simpan
</button>
</div>
}
templ CloseFormGantiPassword() {
<button
type="button"
hx-on::after-request={ JSHideModal("#modal-ganti-pass") }
hx-post="/corp/dashboard_pic/tutupgantipassword"
hx-target="#body-ganti-pass"
hx-swap="outerHTML"
class="close btnactcancel"
data-dismiss="modal"
aria-label="Close"
>
<i aria-hidden="true" class="ki ki-close"></i>
</button>
}
script JSHideModal(modalID string) {
$(modalID).modal('hide')
}
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');
}
}
script HandleFormBeforeRequest() {
const btnActCancel = document.querySelectorAll('.btnactcancel');
const btnActSaveData = document.querySelectorAll('.btnactsavedata');
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');
}
}
script HandleFormAfterGantiPass() {
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');
}
}

View File

@@ -0,0 +1,336 @@
// Code generated by templ - DO NOT EDIT.
// templ: version: v0.2.663
package sidebaruserprofile
//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/component/modal"
"cpone/models"
)
func SidebarForm() 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("<div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = templ.RenderScriptItems(ctx, templ_7745c5c3_Buffer, HandleFormBeforeRequest(), HandleFormAfterGantiPass())
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<form id=\"form-ganti-password\" class=\"form\" hx-post=\"/corp/dashboard_pic/gantipassword\" hx-target=\"#body-ganti-pass\" hx-swap=\"outerHTML\" hx-indicator=\".formloading\" hx-on::before-request=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var2 templ.ComponentScript = HandleFormBeforeRequest()
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var2.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_Var3 templ.ComponentScript = HandleFormAfterGantiPass()
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var3.Call)
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("modal-ganti-pass",
"Ganti Password",
ModalGantiPassword(),
ActionFormGantiPassword(),
CloseFormGantiPassword(),
).Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</form></div>")
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 ModalGantiPassword() 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("<div id=\"body-ganti-pass\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = customtextfield.CustomTextFieldv2(models.CustomTextFieldv2Prm{ID: "oldPassID",
Name: "oldpassid",
Type: "password",
Placeholder: "Masukan password lama",
Label: "Password Lama",
}).Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = customtextfield.CustomTextFieldv2(models.CustomTextFieldv2Prm{ID: "newPassID",
Name: "newpassid",
Type: "password",
Placeholder: "Masukan password baru",
Label: "Password Baru",
}).Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = customtextfield.CustomTextFieldv2(models.CustomTextFieldv2Prm{ID: "reNewPassID",
Name: "renewpassid",
Type: "password",
Placeholder: "Masukan ulang password baru",
Label: "Ulangi Password Baru",
}).Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</div><script>\r\n document.addEventListener('htmx:afterSwap', function(event) {\r\n $('.selectpicker').selectpicker('refresh');\r\n })\r\n </script>")
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 RetModalGantiPassword(
oldPass models.CustomTextFieldv2Prm,
newPass models.CustomTextFieldv2Prm,
renewPass models.CustomTextFieldv2Prm,
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_Var5 := templ.GetChildren(ctx)
if templ_7745c5c3_Var5 == nil {
templ_7745c5c3_Var5 = 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("<div id=\"body-ganti-pass\" hx-on::load=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var6 templ.ComponentScript = hxOnLoad
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var6.Call)
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(oldPass).Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = customtextfield.CustomTextFieldv2(newPass).Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = customtextfield.CustomTextFieldv2(renewPass).Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</div><script>\r\n document.addEventListener('htmx:afterSwap', function(event) {\r\n $('.selectpicker').selectpicker('refresh');\r\n })\r\n </script>")
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 ActionFormGantiPassword() 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_Var7 := templ.GetChildren(ctx)
if templ_7745c5c3_Var7 == nil {
templ_7745c5c3_Var7 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = templ.RenderScriptItems(ctx, templ_7745c5c3_Buffer, JSHideModal("#modal-ganti-pass"))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<button hx-on::after-request=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var8 templ.ComponentScript = JSHideModal("#modal-ganti-pass")
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var8.Call)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" hx-post=\"/corp/dashboard_pic/tutupgantipassword\" hx-target=\"#body-ganti-pass\" hx-swap=\"outerHTML\" hx-indicator=\".cancelloading\" type=\"button\" class=\"btn btn-outline-secondary font-weight-bolder rounded-lg mr-4 btnactcancel\" data-dismiss=\"modal\"><span class=\"htmx-indicator spinner-border spinner-border-sm cancelloading\" role=\"status\" aria-hidden=\"true\"></span> Batal\r</button> <button type=\"submit\" class=\"btn btn-primary btn-shadow font-weight-bold rounded-lg btnactsavedata\"><span class=\"htmx-indicator spinner-border spinner-border-sm formloading\" role=\"status\" aria-hidden=\"true\"></span> Simpan\r</button></div>")
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 CloseFormGantiPassword() 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, JSHideModal("#modal-ganti-pass"))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<button type=\"button\" hx-on::after-request=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var10 templ.ComponentScript = JSHideModal("#modal-ganti-pass")
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var10.Call)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" hx-post=\"/corp/dashboard_pic/tutupgantipassword\" hx-target=\"#body-ganti-pass\" hx-swap=\"outerHTML\" class=\"close btnactcancel\" data-dismiss=\"modal\" aria-label=\"Close\"><i aria-hidden=\"true\" class=\"ki ki-close\"></i></button>")
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_4530`,
Function: `function __templ_JSHideModal_4530(modalID){$(modalID).modal('hide')
}`,
Call: templ.SafeScript(`__templ_JSHideModal_4530`, modalID),
CallInline: templ.SafeScriptInline(`__templ_JSHideModal_4530`, modalID),
}
}
func JSShowModal(modalID string) templ.ComponentScript {
return templ.ComponentScript{
Name: `__templ_JSShowModal_658d`,
Function: `function __templ_JSShowModal_658d(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_658d`, modalID),
CallInline: templ.SafeScriptInline(`__templ_JSShowModal_658d`, modalID),
}
}
func HandleFormBeforeRequest() templ.ComponentScript {
return templ.ComponentScript{
Name: `__templ_HandleFormBeforeRequest_7bdf`,
Function: `function __templ_HandleFormBeforeRequest_7bdf(){const btnActCancel = document.querySelectorAll('.btnactcancel');
const btnActSaveData = document.querySelectorAll('.btnactsavedata');
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_7bdf`),
CallInline: templ.SafeScriptInline(`__templ_HandleFormBeforeRequest_7bdf`),
}
}
func HandleFormAfterGantiPass() templ.ComponentScript {
return templ.ComponentScript{
Name: `__templ_HandleFormAfterGantiPass_cc6f`,
Function: `function __templ_HandleFormAfterGantiPass_cc6f(){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_HandleFormAfterGantiPass_cc6f`),
CallInline: templ.SafeScriptInline(`__templ_HandleFormAfterGantiPass_cc6f`),
}
}

View File

@@ -22,26 +22,35 @@ templ Navbaruserprofile(dataUser models.User) {
<!--end::Header-->
<!--begin::Separator-->
<div class="separator separator-dashed my-7"></div>
<!--end::Separator-->
<!--begin::Notifications-->
// <div>
// <!--begin:Heading-->
// <h5 class="mb-5">
// Recent Notifications
// </h5>
// <!--end:Heading-->
// <!--begin::Item-->
// @NotificationCard()
// <!--end::Item-->
// </div>
<!--end::Notifications-->
<div class="navi mt-2">
<a
class="btn btn-sm btn-light-primary font-weight-bolder py-2 px-5 block"
style="width: 100%"
data-toggle="modal"
data-target="#modal-ganti-pass"
>
Change Password
</a>
</div>
<div class="navi mt-2">
<a
class="btn btn-sm btn-light-primary font-weight-bolder py-2 px-5 block"
hx-get="/login/signout"
hx-indicator=".logoutloading"
style="width: 100%"
>
<span class="htmx-indicator spinner-border spinner-border-sm logoutloading" role="status" aria-hidden="true"></span>
Sign Out
</a>
</div>
</div>
<!--end::Content-->
</div>
@SidebarForm()
}
templ ProfileHeader(dataUser models.User) {
<div class="d-flex align-items-center mt-5">
<div class="d-flex mt-5">
<div class="symbol symbol-100 mr-5 p-2 bg-primary-transparent">
// <div class="symbol-label" style="background-image:url('/assets/media/users/300_21.jpg')"></div>
// <i class="symbol-badge bg-success"></i>
@@ -54,14 +63,6 @@ templ ProfileHeader(dataUser models.User) {
<div class="text-muted mt-1">
{ dataUser.UserPosition }
</div>
<div class="navi mt-2">
<a
class="btn btn-sm btn-light-primary font-weight-bolder py-2 px-5"
hx-get="/login/signout"
>
Sign Out
</a>
</div>
</div>
</div>
}

View File

@@ -33,7 +33,11 @@ func Navbaruserprofile(dataUser models.User) templ.Component {
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<!--end::Header--><!--begin::Separator--><div class=\"separator separator-dashed my-7\"></div><!--end::Separator--><!--begin::Notifications--><!--end::Notifications--></div><!--end::Content--></div>")
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<!--end::Header--><!--begin::Separator--><div class=\"separator separator-dashed my-7\"></div><div class=\"navi mt-2\"><a class=\"btn btn-sm btn-light-primary font-weight-bolder py-2 px-5 block\" style=\"width: 100%\" data-toggle=\"modal\" data-target=\"#modal-ganti-pass\">Change Password\r</a></div><div class=\"navi mt-2\"><a class=\"btn btn-sm btn-light-primary font-weight-bolder py-2 px-5 block\" hx-get=\"/login/signout\" hx-indicator=\".logoutloading\" style=\"width: 100%\"><span class=\"htmx-indicator spinner-border spinner-border-sm logoutloading\" role=\"status\" aria-hidden=\"true\"></span> Sign Out\r</a></div></div><!--end::Content--></div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = SidebarForm().Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
@@ -57,14 +61,14 @@ func ProfileHeader(dataUser models.User) templ.Component {
templ_7745c5c3_Var2 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div class=\"d-flex align-items-center mt-5\"><div class=\"symbol symbol-100 mr-5 p-2 bg-primary-transparent\"><span class=\"iconify symbol-label bg-primary-transparent text-primary\" data-icon=\"gravity-ui:person\"></span></div><div class=\"d-flex flex-column\"><a href=\"#\" class=\"font-weight-bold font-size-h5 text-dark-75 text-hover-primary\">")
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div class=\"d-flex mt-5\"><div class=\"symbol symbol-100 mr-5 p-2 bg-primary-transparent\"><span class=\"iconify symbol-label bg-primary-transparent text-primary\" data-icon=\"gravity-ui:person\"></span></div><div class=\"d-flex flex-column\"><a href=\"#\" class=\"font-weight-bold font-size-h5 text-dark-75 text-hover-primary\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var3 string
templ_7745c5c3_Var3, templ_7745c5c3_Err = templ.JoinStringErrs(dataUser.UserFullName)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\sidebar_user_profile\sidebar_user_profile.templ`, Line: 52, Col: 27}
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\sidebar_user_profile\sidebar_user_profile.templ`, Line: 61, Col: 27}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var3))
if templ_7745c5c3_Err != nil {
@@ -77,13 +81,13 @@ func ProfileHeader(dataUser models.User) templ.Component {
var templ_7745c5c3_Var4 string
templ_7745c5c3_Var4, templ_7745c5c3_Err = templ.JoinStringErrs(dataUser.UserPosition)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\sidebar_user_profile\sidebar_user_profile.templ`, Line: 55, Col: 27}
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\sidebar_user_profile\sidebar_user_profile.templ`, Line: 64, Col: 27}
}
_, 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("</div><div class=\"navi mt-2\"><a class=\"btn btn-sm btn-light-primary font-weight-bolder py-2 px-5\" hx-get=\"/login/signout\">Sign Out\r</a></div></div></div>")
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</div></div></div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}

View File

@@ -41,7 +41,7 @@ templ CustomToastV2Show(title string, message string, typeToast string) {
aria-atomic="true"
id="notification-001"
hx-swap-oob="true"
hx-get="/dev/hidetoast"
hx-get="/home/hidetoast"
hx-trigger="load delay:3s"
hx-target="this"
style="border-radius: 8px 8px 8px 8px;"

View File

@@ -56,7 +56,7 @@ func CustomToastV2Show(title string, message string, typeToast string) templ.Com
templ_7745c5c3_Var1 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div class=\"toast toast-top-right fade show\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" id=\"notification-001\" hx-swap-oob=\"true\" hx-get=\"/dev/hidetoast\" hx-trigger=\"load delay:3s\" hx-target=\"this\" style=\"border-radius: 8px 8px 8px 8px;\">")
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div class=\"toast toast-top-right fade show\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" id=\"notification-001\" hx-swap-oob=\"true\" hx-get=\"/home/hidetoast\" hx-trigger=\"load delay:3s\" hx-target=\"this\" style=\"border-radius: 8px 8px 8px 8px;\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}

View File

@@ -0,0 +1,156 @@
package corporate_handlers
import (
sidebaruserprofile "cpone/component/sidebar_user_profile"
customtoastv2 "cpone/component/toastbootstrap"
"cpone/models"
"cpone/utils"
"net/http"
"strings"
"time"
"github.com/a-h/templ"
"github.com/golang-jwt/jwt/v5"
"github.com/labstack/echo/v4"
)
type AccountService interface {
ChangePasswordPIC(host string, token string, currPassword string, newPassword string) (models.ResponseStatus, error)
ChangePasswordPAT(token string, currPassword string, newPassword string) (models.ResponseStatus, error)
}
func NewAccountHandler(as AccountService) *AccountHandler {
return &AccountHandler{
AccountService: as,
}
}
type AccountHandler struct {
AccountService AccountService
}
func (as *AccountHandler) HandleChangePassword(c echo.Context) error {
var response models.ResponseStatus
userToken := c.Get("user").(*jwt.Token)
token := userToken.Raw
claims := userToken.Claims.(jwt.MapClaims)
userGroup := claims["M_UserGroupDashboard"].(string)
h := c.Request().Host
old_pass := c.FormValue("oldpassid")
new_pass := c.FormValue("newpassid")
re_new_pass := c.FormValue("renewpassid")
// logger.Info("params", zap.Any("old", old_pass), zap.Any("new", new_pass), zap.Any("re-new", re_new_pass))
old_validation := ""
new_validation := ""
renew_validation := ""
errorPop := ""
if strings.TrimSpace(old_pass) == "" {
old_validation = "Tidak boleh kosong"
errorPop = "Tidak boleh kosong"
}
if strings.TrimSpace(new_pass) == "" {
new_validation = "Tidak boleh kosong"
errorPop = "Tidak boleh kosong"
}
if strings.TrimSpace(re_new_pass) == "" {
renew_validation = "Tidak boleh kosong"
errorPop = "Tidak boleh kosong"
}
if strings.TrimSpace(new_pass) != strings.TrimSpace(re_new_pass) {
new_validation = "Password tidak sama"
renew_validation = "Password tidak sama"
errorPop = "Password tidak sama"
}
if old_validation != "" || new_validation != "" || renew_validation != "" {
newBody := sidebaruserprofile.RetModalGantiPassword(
models.CustomTextFieldv2Prm{
ID: "oldPassID",
Name: "oldpassid",
Type: "password",
Placeholder: "Masukan password lama",
Label: "Password Lama",
ErrorMsg: old_validation,
},
models.CustomTextFieldv2Prm{
ID: "newPassID",
Name: "newpassid",
Type: "password",
Placeholder: "Masukan password baru",
Label: "Password Baru",
ErrorMsg: new_validation,
},
models.CustomTextFieldv2Prm{
ID: "reNewPassID",
Name: "renewpassid",
Type: "password",
Placeholder: "Masukan ulang password baru",
Label: "Ulangi Password Baru",
ErrorMsg: renew_validation,
},
sidebaruserprofile.JSHideModal(""),
)
toast := customtoastv2.CustomToastV2Show("Warning", errorPop, "warning")
return utils.ViewMulti(c, []templ.Component{toast, newBody})
}
if userGroup == "pic" {
resp, err := as.AccountService.ChangePasswordPIC(h, token, old_pass, new_pass)
if err != nil {
newBody := sidebaruserprofile.ModalGantiPassword()
toast := customtoastv2.CustomToastV2Show("Warning", err.Error(), "warning")
return utils.ViewMulti(c, []templ.Component{toast, newBody})
}
response = resp
}
if userGroup == "patient" {
resp, err := as.AccountService.ChangePasswordPAT(token, old_pass, new_pass)
if err != nil {
newBody := sidebaruserprofile.ModalGantiPassword()
toast := customtoastv2.CustomToastV2Show("Warning", "Error ganti password pat", "warning")
return utils.ViewMulti(c, []templ.Component{toast, newBody})
}
response = resp
}
if response.Status == "ERR" {
newBody := sidebaruserprofile.ModalGantiPassword()
toast := customtoastv2.CustomToastV2Show("Warning", response.Message, "warning")
return utils.ViewMulti(c, []templ.Component{toast, newBody})
}
expire := time.Now().Add(-7 * 24 * time.Hour)
cookie := new(http.Cookie)
cookie.Name = "token"
cookie.Value = ""
cookie.Path = "/"
cookie.Expires = expire
cookie.HttpOnly = true
c.SetCookie(cookie)
ret := `
<script>
$("#body-ganti-pass").modal('hide')
console.log("signout")
localStorage.removeItem("token")
localStorage.removeItem("user")
setTimeout(() => {
window.location.replace("/login");
}, 200)
</script>
`
c.Response().Header().Set("HX-Trigger", "script")
return c.String(http.StatusOK, ret)
}
func (as *AccountHandler) HandleCloseChangePassword(c echo.Context) error {
newBody := sidebaruserprofile.ModalGantiPassword()
return utils.View(c, newBody)
}

View File

@@ -21,7 +21,7 @@ type DashboardPicServices interface {
GetEmployeeAnalyticBreadcrumb(title string) (models.BreadCrumbV1, error)
GetCorporateName(userID string) (string, error)
DummyDataTest() ([]models.DashboardPic, error)
ListingDashboardPic(search string, startdate string, enddate string, currentpage int, rowperpage int) ([]models.DashboardPic, int, error)
ListingDashboardPic(email string, search string, startdate string, enddate string, currentpage int, rowperpage int) ([]models.DashboardPic, int, error)
}
type DashboardPicHandler struct {
@@ -45,7 +45,7 @@ func (ea *DashboardPicHandler) HandleShowEmployeeAnalyticScreen(c echo.Context)
userID := claims["M_UserID"].(string)
name := claims["M_StaffName"].(string)
position := claims["M_UserGroupDashboard"].(string)
logger.Info("jwt", zap.Any("name", name))
email := claims["M_UserEmail"].(string)
title, err := ea.DashboardPicServices.GetCorporateName(userID)
if err != nil {
@@ -75,7 +75,7 @@ func (ea *DashboardPicHandler) HandleShowEmployeeAnalyticScreen(c echo.Context)
sidbaruser := sidebaruserprofile.Navbaruserprofile(user)
breadcrumb := breadcrumadmin.MainBreadcrumbAdminV1(dataBreadcrumb)
listingData, totalPage, err := ea.DashboardPicServices.ListingDashboardPic("", "", "", 1, 10)
listingData, totalPage, err := ea.DashboardPicServices.ListingDashboardPic(email, "", "", "", 1, 10)
if err != nil {
defer logger.Sync()
logger.Info("Error get listing data", zap.Any("error", err), zap.Any("total", totalPage))
@@ -129,6 +129,10 @@ func (ea *DashboardPicHandler) HandlePagination(c echo.Context) error {
startdate := c.QueryParam("startdate")
enddate := c.QueryParam("enddate")
userCok := c.Get("user").(*jwt.Token)
claims := userCok.Claims.(jwt.MapClaims)
email := claims["M_UserEmail"].(string)
var retVal []templ.Component
logger, _ := zap.NewProduction()
page, err := strconv.Atoi(pageparam)
@@ -138,7 +142,7 @@ func (ea *DashboardPicHandler) HandlePagination(c echo.Context) error {
return err
}
listdata, totalPage, err := ea.DashboardPicServices.ListingDashboardPic(search, startdate, enddate, page, 10)
listdata, totalPage, err := ea.DashboardPicServices.ListingDashboardPic(email, search, startdate, enddate, page, 10)
if err != nil {
defer logger.Sync()
logger.Info("Error convert page param")
@@ -172,7 +176,11 @@ func (ea *DashboardPicHandler) HandleFilter(c echo.Context) error {
listID := c.QueryParam("listID")
paginationID := c.QueryParam("paginationID")
dataList, totalPage, err := ea.DashboardPicServices.ListingDashboardPic(search, startdate, enddate, 1, 5)
userCok := c.Get("user").(*jwt.Token)
claims := userCok.Claims.(jwt.MapClaims)
email := claims["M_UserEmail"].(string)
dataList, totalPage, err := ea.DashboardPicServices.ListingDashboardPic(email, search, startdate, enddate, 1, 10)
if err != nil {
defer logger.Sync()
logger.Info("Error Get Listing Data", zap.Any("error", err))

View File

@@ -16,6 +16,7 @@ import (
type McuDetailServices interface {
GetBreadcrumb(id string) (models.BreadCrumbV1, error)
GetTabNameList(id string) ([]models.McuTabModels, error)
}
type McuDetailHandler struct {
@@ -38,7 +39,7 @@ func (mcud *McuDetailHandler) HandlerShowMcuDetailScreen(c echo.Context) error {
claims := userCok.Claims.(jwt.MapClaims)
name := claims["M_StaffName"].(string)
position := claims["M_UserGroupDashboard"].(string)
logger.Info("jwt", zap.Any("name", name))
// logger.Info("jwt", zap.Any("name", name))
user := models.User{
UserID: 1,
@@ -58,9 +59,17 @@ func (mcud *McuDetailHandler) HandlerShowMcuDetailScreen(c echo.Context) error {
navbaruser := navbarmenu.NavbarWithLogo(user)
sidbaruser := sidebaruserprofile.Navbaruserprofile(user)
// test := []models.McuTabModels{}
tabname, err := mcud.McuDetailServices.GetTabNameList(id)
if err != nil {
return err
}
// logger.Info("List tab name", zap.Any("tav", tabname))
content := corporate_mcudetail.McuDetailScreen(
breadcrumb,
corporate_mcudetail.TabViewMcuDetail(id),
// corporate_mcudetail.TabViewMcuDetail(id),
corporate_mcudetail.McuDetailTabView(id, tabname),
)
css := corporate_mcudetail.CSSMcuDetail(
corporate_tabmcudetail.CssKesimpulan(),

View File

@@ -2,18 +2,26 @@ package mcu_corporate_handlers
import (
"cpone/component/pagination"
customtoastv2 "cpone/component/toastbootstrap"
"cpone/models"
"cpone/utils"
corporate_mcudetail "cpone/views/corporate/mcu/mcutab"
"strconv"
"strings"
"github.com/a-h/templ"
"github.com/golang-jwt/jwt/v5"
"github.com/labstack/echo/v4"
"go.uber.org/zap"
)
type TabDaftarPesertaServices interface {
GetListMcuDaftarPeserta(id string, currentpage int, rowperpage int) ([]models.ModelMcuDaftarPeserta, int, error)
GetReportMcu(orderheaderID string) ([]models.TabViewReportMcu, error)
GetListDaftarPesertaMCU(id string, currentpage int, rowperpage int) ([]models.ModelMcuDaftarPeserta, int, error)
GenerataPasswordMCU(mgmMCUID string, host string) (models.GeneratePasswordResponse, error)
GetAkunPeserta(patientID string) (models.AuthPatient, error)
GetListReportPesertaV4(orderheaderID string, staffname string) ([]models.TabViewReportMcu, error)
ResetPasswordPeserta(token string, newPassword string, email string, authuserid string) (models.ResponseStatus, error)
DetailTestdanPaket(orderheaderID string) ([]models.TableTestPaket, error)
}
type TabDaftarPesertaHandlers struct {
@@ -31,24 +39,41 @@ func (tdp *TabDaftarPesertaHandlers) HandleShowTabDaftarPeserta(c echo.Context)
title := "Daftar Report"
tableID := utils.GenerateRandomID("tableid")
paginationID := utils.GenerateRandomID("paginationID")
dialogReportID := utils.GenerateRandomID("dialogreportid")
dialogReportBodyID := utils.GenerateRandomID("dialogreportbodyid")
dialogGeneratePassID := utils.GenerateRandomID("generatepasswordID")
dialogGeneratePassBodyID := utils.GenerateRandomID("generatepasswordBodyID")
dialogAkunID := utils.GenerateRandomID("dialogakunID")
dialogAkunBodyID := utils.GenerateRandomID("dialogakunbodyID")
dialogDetailID := utils.GenerateRandomID("dialogdetailID")
dialogDetailBodyID := utils.GenerateRandomID("dialogdetailBodyID")
id := c.Param("id")
logger.Info("Params", zap.Any("id", id))
dataTable, totalPage, err := tdp.TabDaftarPesertaServices.GetListMcuDaftarPeserta(id, 1, 10)
dataTable, totalPage, err := tdp.TabDaftarPesertaServices.GetListDaftarPesertaMCU(id, 1, 10)
if err != nil {
return err
}
logger.Info("totalPage", zap.Any("total", totalPage))
table := corporate_mcudetail.TableDaftarPeserta(
dataTable,
tableID,
"/corp/dashboard_pic/detail/"+id+"/tabdaftarpeserta/openreport",
"#"+dialogReportBodyID,
"#tableID, #paginationID, #dialogReportID, #dialogReportBodyID",
"#tableID, #paginationID, #dialogReportID, #dialogReportBodyID, #dialogGenPassID, #dialogGenPassBodyID, #dialogAkunID, #dialogAkunBodyID",
"outerHTML",
"/corp/dashboard_pic/detail/"+id+"/tabdaftarpeserta/openviewakun",
"#"+dialogAkunBodyID,
"#tableID, #paginationID, #dialogReportID, #dialogReportBodyID, #dialogGenPassID, #dialogGenPassBodyID, #dialogAkunID, #dialogAkunBodyID",
"outerHTML",
"/corp/dashboard_pic/detail/"+id+"/tabdaftarpeserta/opendetail",
"#"+dialogDetailBodyID,
"#tableID, #paginationID, #dialogReportID, #dialogReportBodyID, #dialogGenPassID, #dialogGenPassBodyID, #dialogAkunID, #dialogAkunBodyID, #dialogDetailID, #dialogDetailBodyID",
"outerHTML",
)
@@ -57,7 +82,7 @@ func (tdp *TabDaftarPesertaHandlers) HandleShowTabDaftarPeserta(c echo.Context)
1,
"/corp/dashboard_pic/detail/"+id+"/tabdaftarpeserta/changepage",
paginationID,
"#tableID, #paginationID, #loading-parent, #loading-child, #loading-spinner, #loadingcontent, #dialogReportID, #dialogReportBodyID",
"#tableID, #paginationID, #loading-parent, #loading-child, #loading-spinner, #loadingcontent, #dialogReportID, #dialogReportBodyID, #dialogGenPassID, #dialogGenPassBodyID, #dialogAkunID, #dialogAkunBodyID",
"#contentlayout",
"outerHTML", "", "",
corporate_mcudetail.BeforeRequestContent(),
@@ -69,10 +94,11 @@ func (tdp *TabDaftarPesertaHandlers) HandleShowTabDaftarPeserta(c echo.Context)
pagination,
)
// modal dialog tab rpt
tabData := []models.TabViewReportMcu{}
tabview := corporate_mcudetail.TabReportView(tabData)
bodymodal := corporate_mcudetail.ModalBody(
bodymodal := corporate_mcudetail.ModalRptBody(
dialogReportBodyID,
tabview,
corporate_mcudetail.JsShowModal(""),
@@ -86,34 +112,160 @@ func (tdp *TabDaftarPesertaHandlers) HandleShowTabDaftarPeserta(c echo.Context)
)
modaldialog := corporate_mcudetail.DialogReport(
"",
"generatepasswordform",
"/corp/dashboard_pic/detail/"+id+"/tabdaftarpeserta/dialogreport",
"#"+dialogReportBodyID,
"outerHTML",
"#tableID, #paginationID, #dialogReportID, #dialogReportBodyID"+paginationID,
"#tableID, #paginationID, #dialogAkunID, #dialogAkunBodyID, #dialogGenPassID, #dialogGenPassBodyID, #dialogReportID, #dialogReportBodyID"+paginationID,
dialogReportID,
title,
bodymodal,
closemodal,
)
// dialog generate password
modalGenPassBody := corporate_mcudetail.ModalGenPassBody(
dialogGeneratePassBodyID,
"Apakah anda yakin untuk men-generate password untuk seluruh karyawan",
corporate_mcudetail.JsShowModal(""),
)
closeGenPass := corporate_mcudetail.ModalClose(
"/corp/dashboard_pic/detail/"+id+"/tabdaftarpeserta/closegenpass",
"#"+dialogGeneratePassBodyID,
"outerHTML",
"#"+dialogGeneratePassID,
)
actionGenPass := corporate_mcudetail.ModalGenPassAction(
"/corp/dashboard_pic/detail/"+id+"/tabdaftarpeserta/closegenpass",
"#"+dialogGeneratePassBodyID,
"outerHTML",
"#"+dialogGeneratePassID,
)
modalGenPass := corporate_mcudetail.DialogGeneratePass(
"",
"/corp/dashboard_pic/detail/"+id+"/tabdaftarpeserta/dialoggenpass",
"#"+dialogGeneratePassBodyID,
"outerHTML",
"#tableID, #paginationID, #contentlayout, #dialogAkunID, #dialogAkunBodyID, #dialogGenPassID, #dialogGenPassBodyID, #dialogReportID, #dialogReportBodyID, #currpage"+paginationID,
dialogGeneratePassID,
"Generate Password MCU",
modalGenPassBody,
closeGenPass,
actionGenPass,
)
// dialog view akun
dialogAkunBody := corporate_mcudetail.ModalViewAkunBody(
dialogAkunBodyID,
models.CustomTextFieldv2Prm{
Label: "ID Akun Peserta",
Name: "akunpesertaid",
Placeholder: "ID Akun Peserta",
Type: "hidden",
ID: "akunpesertaidid",
},
models.CustomTextFieldv2Prm{
Label: "Email",
Name: "akunpesertaemail",
Type: "text",
ID: "akunpesertaemailid",
},
models.CustomTextFieldv2Prm{
Label: "Password baru",
Name: "akunpesertapassnew",
Type: "password",
ID: "akunpesertapassnewid",
},
models.CustomTextFieldv2Prm{
Label: "Ulangi password baru",
Name: "akunpesertapasscek",
Type: "password",
ID: "akunpesertapasscekid",
},
corporate_mcudetail.JsShowModal(""),
)
dialogAkunClose := corporate_mcudetail.ModalClose(
"/corp/dashboard_pic/detail/"+id+"/tabdaftarpeserta/closeviewakun",
"#"+dialogAkunBodyID,
"outerHTML",
"#"+dialogAkunID,
)
dialogAkunAction := corporate_mcudetail.ModalGenPassAction(
"/corp/dashboard_pic/detail/"+id+"/tabdaftarpeserta/closeviewakun",
"#"+dialogAkunBodyID,
"outerHTML",
"#"+dialogAkunID,
)
dialogAkunView := corporate_mcudetail.DialogGeneratePass(
"viewakunform",
"/corp/dashboard_pic/detail/"+id+"/tabdaftarpeserta/viewakun",
"#"+dialogAkunBodyID,
"outerHTML",
"#tableID, #paginationID, #dialogAkunID, #contentlayout, #dialogAkunBodyID, #dialogGenPassID, #dialogGenPassBodyID, #dialogReportID, #dialogReportBodyID, #currpage"+paginationID,
dialogAkunID,
"Reset Password Akun Peserta",
dialogAkunBody,
dialogAkunClose,
dialogAkunAction,
)
// dialog detali pemeriksaan
detailData, err := tdp.TabDaftarPesertaServices.DetailTestdanPaket("")
if err != nil {
return err
}
detailTable := corporate_mcudetail.TableDetailMCU(detailData)
dialodDetailBody := corporate_mcudetail.ModalRptBody(
dialogDetailBodyID,
detailTable,
corporate_mcudetail.JsShowModal(""),
)
closeDetail := corporate_mcudetail.ModalClose(
"/corp/dashboard_pic/detail/"+id+"/tabdaftarpeserta/closedetail",
"#"+dialogDetailBodyID,
"outerHTML",
"#"+dialogDetailID,
)
modalDetail := corporate_mcudetail.DialogReport(
"detailmcu",
"/corp/dashboard_pic/detail/"+id+"/tabdaftarpeserta/dialogdetail",
"#"+dialogDetailBodyID,
"outerHTML",
"#tableID, #paginationID, #dialogAkunID, #dialogAkunBodyID, #dialogGenPassID, #dialogGenPassBodyID, #dialogReportID, #dialogReportBodyID"+paginationID,
dialogDetailID,
"Detail Pemeriksaan",
dialodDetailBody,
closeDetail,
)
content := corporate_mcudetail.TabDaftarPesertaScreen(
tableID,
paginationID,
dialogReportID,
dialogReportBodyID,
dialogGeneratePassID,
dialogGeneratePassBodyID,
dialogAkunID,
dialogAkunBodyID,
dialogDetailID,
dialogDetailBodyID,
clayout,
modaldialog,
modalGenPass,
dialogAkunView,
modalDetail,
)
// css := corporate_mcudetail.CSSTabDaftarPeserta()
// js := corporate_mcudetail.JsTabDaftarPeserta()
// view := corporate_mcudetail.ShowTabDafterPeserta(
// title,
// content,
// css,
// js,
// )
return utils.View(c, content)
}
@@ -122,8 +274,10 @@ func (tdp *TabDaftarPesertaHandlers) HandlePagination(c echo.Context) error {
pageparam := c.QueryParam("page")
tableID := c.QueryParam("tableID")
paginationID := c.QueryParam("paginationID")
// dialogReportID := c.QueryParam("dialogReportID")
dialogReportBodyID := c.QueryParam("dialogReportBodyID")
dialogAkunBodyID := c.QueryParam("dialogAkunBodyID")
dialogDetailBodyID := c.QueryParam("dialogDetailBodyID")
id := c.Param("id")
@@ -133,7 +287,7 @@ func (tdp *TabDaftarPesertaHandlers) HandlePagination(c echo.Context) error {
return err
}
tableData, totalPage, err := tdp.TabDaftarPesertaServices.GetListMcuDaftarPeserta(id, page, 10)
tableData, totalPage, err := tdp.TabDaftarPesertaServices.GetListDaftarPesertaMCU(id, page, 10)
if err != nil {
return err
}
@@ -142,7 +296,15 @@ func (tdp *TabDaftarPesertaHandlers) HandlePagination(c echo.Context) error {
tableID,
"/corp/dashboard_pic/detail/"+id+"/tabdaftarpeserta/openreport",
"#"+dialogReportBodyID,
"#tableID, #paginationID, #dialogReportID, #dialogReportBodyID",
"#tableID, #paginationID, #dialogReportID, #dialogReportBodyID, #dialogGenPassID, #dialogGenPassBodyID, #dialogAkunID, #dialogAkunBodyID",
"outerHTML",
"/corp/dashboard_pic/detail/"+id+"/tabdaftarpeserta/openviewakun",
"#"+dialogAkunBodyID,
"#tableID, #paginationID, #dialogReportID, #dialogReportBodyID, #dialogGenPassID, #dialogGenPassBodyID, #dialogAkunID, #dialogAkunBodyID",
"outerHTML",
"/corp/dashboard_pic/detail/"+id+"/tabdaftarpeserta/opendetail",
"#"+dialogDetailBodyID,
"#tableID, #paginationID, #dialogReportID, #dialogReportBodyID, #dialogGenPassID, #dialogGenPassBodyID, #dialogAkunID, #dialogAkunBodyID, #dialogDetailID, #dialogDetailBodyID",
"outerHTML",
)
@@ -151,19 +313,13 @@ func (tdp *TabDaftarPesertaHandlers) HandlePagination(c echo.Context) error {
page,
"/corp/dashboard_pic/detail/"+id+"/tabdaftarpeserta/changepage",
paginationID,
"#tableID, #paginationID, #loading-parent, #loading-child, #loading-spinner, #loadingcontent, #dialogReportID, #dialogReportBodyID, #currPage"+paginationID,
"#tableID, #paginationID, #loading-parent, #loading-child, #loading-spinner, #loadingcontent, #dialogDetailID, #dialogDetailBodyID, #dialogGenPassID, #dialogGenPassBodyID, #dialogAkunID, #dialogAkunBodyID, #dialogReportID, #dialogReportBodyID, #currPage"+paginationID,
"#contentlayout",
"outerHTML", "", "",
corporate_mcudetail.BeforeRequestContent(),
corporate_mcudetail.AfterRequestContent(),
)
// content := corporate_mcudetail.TabDaftarPesertaScreen(tableID, paginationID, table, pagination)
// retval = append(retval, table)
// retval = append(retval, pagination)
// return utils.ViewMulti(c, retval)
// return utils.View(c, content)
clayout := corporate_mcudetail.ContentLayout(table, pagination)
return utils.View(c, clayout)
}
@@ -171,15 +327,20 @@ func (tdp *TabDaftarPesertaHandlers) HandlePagination(c echo.Context) error {
func (tdp *TabDaftarPesertaHandlers) HandleOpenReportDialog(c echo.Context) error {
logger, _ := zap.NewProduction()
userCok := c.Get("user").(*jwt.Token)
claims := userCok.Claims.(jwt.MapClaims)
staffname := claims["M_StaffName"].(string)
idx := c.QueryParam("idx")
dialogReportID := c.QueryParam("dialogReportID")
dialogReportBodyID := c.QueryParam("dialogReportBodyID")
logger.Info("params", zap.Any("idx", idx))
tabData, err := tdp.TabDaftarPesertaServices.GetReportMcu(idx)
tabdatav3, err := tdp.TabDaftarPesertaServices.GetListReportPesertaV4(idx, staffname)
if err != nil {
logger.Info("error", zap.Any("err", err))
tab := corporate_mcudetail.TabReportView([]models.TabViewReportMcu{})
mod := corporate_mcudetail.ModalBody(
mod := corporate_mcudetail.ModalRptBody(
dialogReportBodyID,
tab,
corporate_mcudetail.JsShowModal(""),
@@ -187,9 +348,11 @@ func (tdp *TabDaftarPesertaHandlers) HandleOpenReportDialog(c echo.Context) erro
return utils.View(c, mod)
}
tabcomponent := corporate_mcudetail.TabReportView(tabData)
logger.Info("resp new data", zap.Any("data", tabdatav3))
modalbody := corporate_mcudetail.ModalBody(
tabcomponent := corporate_mcudetail.TabReportView(tabdatav3)
modalbody := corporate_mcudetail.ModalRptBody(
dialogReportBodyID,
tabcomponent,
corporate_mcudetail.JsShowModal("#"+dialogReportID),
@@ -197,3 +360,446 @@ func (tdp *TabDaftarPesertaHandlers) HandleOpenReportDialog(c echo.Context) erro
return utils.View(c, modalbody)
}
func (tdp *TabDaftarPesertaHandlers) HandleCloseDialogGenPass(c echo.Context) error {
logger, _ := zap.NewProduction()
id := c.Param("id")
dialogGenPassID := c.FormValue("dialogGenPassID")
dialogGenPassBodyID := c.FormValue("dialogGenPassBodyID")
logger.Info("param", zap.Any("id", id))
modalDialogGenPass := corporate_mcudetail.ModalGenPassBody(
dialogGenPassBodyID,
"Apakah anda yakin untuk men-generate password untuk seluruh karyawan",
corporate_mcudetail.JsHideModal("#"+dialogGenPassID),
)
return utils.View(c, modalDialogGenPass)
}
func (tdp *TabDaftarPesertaHandlers) HandleDialogGenPass(c echo.Context) error {
// logger, _ := zap.NewProduction()
host := c.Request().Host
id := c.Param("id")
dialogGenPassID := c.FormValue("dialogGenPassID")
dialogGenPassBodyID := c.FormValue("dialogGenPassBodyID")
dialogReportID := c.FormValue("dialogReportID")
dialogReportBodyID := c.FormValue("dialogReportBodyID")
dialogAkunID := c.FormValue("dialogAkunID")
dialogAkunBodyID := c.FormValue("dialogAkunBodyID")
tableID := c.FormValue("tableID")
paginationID := c.FormValue("paginationID")
pageparam := c.FormValue("currpage" + paginationID)
// generate pasword
resp, err := tdp.TabDaftarPesertaServices.GenerataPasswordMCU(id, host)
if err != nil {
modalDialogGenPass := corporate_mcudetail.ModalGenPassBody(
dialogGenPassBodyID,
"Apakah anda yakin untuk men-generate password untuk seluruh karyawan",
corporate_mcudetail.JsShowModal(""),
)
toastwarning := customtoastv2.CustomToastV2Show("Warning", "Gagal generate password", "warning")
retVal := []templ.Component{toastwarning, modalDialogGenPass}
return utils.ViewMulti(c, retVal)
}
if resp.Status != "OK" {
modalDialogGenPass := corporate_mcudetail.ModalGenPassBody(
dialogGenPassBodyID,
"Apakah anda yakin untuk men-generate password untuk seluruh karyawan",
corporate_mcudetail.JsShowModal(""),
)
toastwarning := customtoastv2.CustomToastV2Show("Warning", "Gagal generate password MCU", "warning")
retVal := []templ.Component{toastwarning, modalDialogGenPass}
return utils.ViewMulti(c, retVal)
}
aa := "/corp/dashboard_pic/detail/" + id + "/tabdaftarpeserta/reload?page=" + pageparam
bb := "&tableID=" + tableID
cc := "&paginationID=" + paginationID
dd := "&dialogReportID=" + dialogReportID
ee := "&dialogReportBodyID=" + dialogReportBodyID
ff := "&dialogGenPassID=" + dialogGenPassID
gg := "&dialogGenPassBodyID=" + dialogGenPassBodyID
hh := "&dialogAkunID=" + dialogAkunID
ii := "&dialogAkunBodyID=" + dialogAkunBodyID
jj := "&currpage" + paginationID + "=" + pageparam
link := aa + bb + cc + dd + ee + ff + gg + hh + ii + jj
modalDialogGenPass := corporate_mcudetail.ModalGenPassBody(
dialogGenPassBodyID,
"Apakah anda yakin untuk men-generate password untuk seluruh karyawan",
// corporate_mcudetail.JsHideModal("#"+dialogGenPassID),
corporate_mcudetail.JsGenPassReload("#"+dialogGenPassID, link),
)
message := "Success generate password.\n" + "resp.Message" + " password, telah dikirim melalui email peserta"
toastSuccess := customtoastv2.CustomToastV2Show("Success", message, "success")
retVal := []templ.Component{toastSuccess, modalDialogGenPass}
return utils.ViewMulti(c, retVal)
}
func (tdp *TabDaftarPesertaHandlers) HandleOpenViewAkun(c echo.Context) error {
logger, _ := zap.NewProduction()
patientID := c.QueryParam("patid")
dialogAkunID := c.QueryParam("dialogAkunID")
dialogAkunBodyID := c.QueryParam("dialogAkunBodyID")
logger.Info("params", zap.Any("patid", patientID))
akun, err := tdp.TabDaftarPesertaServices.GetAkunPeserta(patientID)
if err != nil {
dialogAkunBody := corporate_mcudetail.ModalViewAkunBody(
dialogAkunBodyID,
models.CustomTextFieldv2Prm{
Label: "ID Akun Peserta",
Name: "akunpesertaid",
Placeholder: "ID Akun Peserta",
Type: "hidden",
ID: "akunpesertaidid",
Value: patientID,
},
models.CustomTextFieldv2Prm{
Label: "Email Akun",
Name: "akunpesertaemail",
Type: "text",
ID: "akunpesertaemailid",
},
models.CustomTextFieldv2Prm{
Label: "Password baru",
Name: "akunpesertapassnew",
Type: "password",
ID: "akunpesertapassnewid",
},
models.CustomTextFieldv2Prm{
Label: "Ulangi password baru",
Name: "akunpesertapasscek",
Type: "password",
ID: "akunpesertapasscekid",
},
corporate_mcudetail.JsShowModal("#"+dialogAkunID),
)
toastwarning := customtoastv2.CustomToastV2Show("Warning", "Gagal generate password MCU", "warning")
retval := []templ.Component{toastwarning, dialogAkunBody}
return utils.ViewMulti(c, retval)
}
dialogAkunBody := corporate_mcudetail.ModalViewAkunBody(
dialogAkunBodyID,
models.CustomTextFieldv2Prm{
Label: "ID Akun Peserta",
Name: "akunpesertaid",
Placeholder: "ID Akun Peserta",
Type: "hidden",
ID: "akunpesertaidid",
Value: strconv.Itoa(akun.AuthPatientID),
},
models.CustomTextFieldv2Prm{
Label: "Email Akun",
Name: "akunpesertaemail",
Type: "text",
ID: "akunpesertaemailid",
Value: akun.AuthPatientEmail,
},
models.CustomTextFieldv2Prm{
Label: "Password baru",
Name: "akunpesertapassnew",
Type: "password",
ID: "akunpesertapassnewid",
Placeholder: "Masukan password baru",
},
models.CustomTextFieldv2Prm{
Label: "Ulangi password baru",
Name: "akunpesertapasscek",
Type: "password",
ID: "akunpesertapasscekid",
Placeholder: "Masukan ulang password baru",
},
corporate_mcudetail.JsShowModal("#"+dialogAkunID),
)
return utils.View(c, dialogAkunBody)
}
func (tdp *TabDaftarPesertaHandlers) HandleCloseViewAkun(c echo.Context) error {
logger, _ := zap.NewProduction()
patientID := c.FormValue("akunpesertaid")
dialogAkunID := c.FormValue("dialogAkunID")
dialogAkunBodyID := c.FormValue("dialogAkunBodyID")
logger.Info("params", zap.Any("patid", patientID))
dialogAkunBody := corporate_mcudetail.ModalViewAkunBody(
dialogAkunBodyID,
models.CustomTextFieldv2Prm{
Label: "ID Akun Peserta",
Name: "akunpesertaid",
Placeholder: "ID Akun Peserta",
Type: "hidden",
ID: "akunpesertaidid",
},
models.CustomTextFieldv2Prm{
Label: "Email Akun",
Name: "akunpesertaemail",
Type: "text",
ID: "akunpesertaemailid",
},
models.CustomTextFieldv2Prm{
Label: "Password baru",
Name: "akunpesertapassnew",
Type: "password",
ID: "akunpesertapassnewid",
},
models.CustomTextFieldv2Prm{
Label: "Ulangi password baru",
Name: "akunpesertapasscek",
Type: "password",
ID: "akunpesertapasscekid",
},
corporate_mcudetail.JsHideModal("#"+dialogAkunID),
)
return utils.View(c, dialogAkunBody)
}
func (tdp *TabDaftarPesertaHandlers) HandleAkun(c echo.Context) error {
logger, _ := zap.NewProduction()
userToken := c.Get("user").(*jwt.Token)
token := userToken.Raw
patientID := c.FormValue("akunpesertaid")
dialogAkunID := c.FormValue("dialogAkunID")
dialogAkunBodyID := c.FormValue("dialogAkunBodyID")
logger.Info("params", zap.Any("patid", patientID))
akunID := c.FormValue("akunpesertaid")
akunEmail := c.FormValue("akunpesertaemail")
oldPass := c.FormValue("akunpesertapassold")
newPass := c.FormValue("akunpesertapassnew")
newPasscek := c.FormValue("akunpesertapasscek")
formValidation := ""
newValidation := ""
cekValidation := ""
if strings.TrimSpace(newPass) == "" {
formValidation = "Password tidak boleh kosong"
newValidation = "Password tidak boleh kosong"
}
if strings.TrimSpace(newPasscek) == "" {
formValidation = "Password tidak boleh kosong"
cekValidation = "Password tidak boleh kosong"
}
if strings.TrimSpace(oldPass) == "" && strings.TrimSpace(newPass) == "" && strings.TrimSpace(newPasscek) == "" {
formValidation = "Password lama dan baru tidak boleh kosong"
newValidation = "Password baru tidak boleh kosong"
cekValidation = "Password baru tidak boleh kosong"
}
if strings.TrimSpace(newPass) != strings.TrimSpace(newPasscek) {
formValidation = "Password tidak sama"
newValidation = "Password tidak sama"
cekValidation = "Password tidak sama"
}
if formValidation != "" || newValidation != "" || cekValidation != "" {
dialogAkunBody := corporate_mcudetail.ModalViewAkunBody(
dialogAkunBodyID,
models.CustomTextFieldv2Prm{
Label: "ID Akun Peserta",
Name: "akunpesertaid",
Placeholder: "ID Akun Peserta",
Type: "hidden",
ID: "akunpesertaidid",
Value: akunID,
},
models.CustomTextFieldv2Prm{
Label: "Email Akun",
Name: "akunpesertaemail",
Type: "text",
ID: "akunpesertaemailid",
Value: akunEmail,
},
models.CustomTextFieldv2Prm{
Label: "Password baru",
Name: "akunpesertapassnew",
Type: "password",
ID: "akunpesertapassnewid",
Placeholder: "Masukan password baru",
ErrorMsg: newValidation,
},
models.CustomTextFieldv2Prm{
Label: "Ulangi password baru",
Name: "akunpesertapasscek",
Type: "password",
ID: "akunpesertapasscekid",
Placeholder: "Masukan ulang password baru",
ErrorMsg: cekValidation,
},
corporate_mcudetail.JsShowModal(""),
)
toastwarning := customtoastv2.CustomToastV2Show("Warning", formValidation, "warning")
retVal := []templ.Component{toastwarning, dialogAkunBody}
return utils.ViewMulti(c, retVal)
}
resp, err := tdp.TabDaftarPesertaServices.ResetPasswordPeserta(token, newPass, akunEmail, akunID)
dialogAkunErr := corporate_mcudetail.ModalViewAkunBody(
dialogAkunBodyID,
models.CustomTextFieldv2Prm{
Label: "ID Akun Peserta",
Name: "akunpesertaid",
Placeholder: "ID Akun Peserta",
Type: "hidden",
ID: "akunpesertaidid",
Value: akunID,
},
models.CustomTextFieldv2Prm{
Label: "Email Akun",
Name: "akunpesertaemail",
Type: "text",
ID: "akunpesertaemailid",
Value: akunEmail,
},
models.CustomTextFieldv2Prm{
Label: "Password baru",
Name: "akunpesertapassnew",
Type: "password",
ID: "akunpesertapassnewid",
Placeholder: "Masukan password baru",
},
models.CustomTextFieldv2Prm{
Label: "Ulangi password baru",
Name: "akunpesertapasscek",
Type: "password",
ID: "akunpesertapasscekid",
Placeholder: "Masukan ulang password baru",
},
corporate_mcudetail.JsHideModal(""),
)
if err != nil {
toastwarning := customtoastv2.CustomToastV2Show("Warning", err.Error(), "warning")
return utils.ViewMulti(c, []templ.Component{toastwarning, dialogAkunErr})
}
if resp.Status == "ERR" {
toastwarning := customtoastv2.CustomToastV2Show("Warning", resp.Message, "warning")
return utils.ViewMulti(c, []templ.Component{toastwarning, dialogAkunErr})
}
dialogAkunBody := corporate_mcudetail.ModalViewAkunBody(
dialogAkunBodyID,
models.CustomTextFieldv2Prm{
Label: "ID Akun Peserta",
Name: "akunpesertaid",
Placeholder: "ID Akun Peserta",
Type: "hidden",
ID: "akunpesertaidid",
},
models.CustomTextFieldv2Prm{
Label: "Email Akun",
Name: "akunpesertaemail",
Type: "text",
ID: "akunpesertaemailid",
},
models.CustomTextFieldv2Prm{
Label: "Password baru",
Name: "akunpesertapassnew",
Type: "password",
ID: "akunpesertapassnewid",
Placeholder: "Masukan password baru",
},
models.CustomTextFieldv2Prm{
Label: "Ulangi password baru",
Name: "akunpesertapasscek",
Type: "password",
ID: "akunpesertapasscekid",
Placeholder: "Masukan ulang password baru",
},
corporate_mcudetail.JsHideModal("#"+dialogAkunID),
)
toastwarning := customtoastv2.CustomToastV2Show("Success", "Berhasil reset password peserta: "+akunEmail, "success")
retVal := []templ.Component{toastwarning, dialogAkunBody}
return utils.ViewMulti(c, retVal)
}
func (tdp *TabDaftarPesertaHandlers) HandleContentReload(c echo.Context) error {
id := c.Param("id")
dialogReportBodyID := c.FormValue("dialogReportBodyID")
dialogAkunBodyID := c.FormValue("dialogAkunBodyID")
dialogDetailBodyID := c.FormValue("dialogDetailBodyID")
tableID := c.FormValue("tableID")
paginationID := c.FormValue("paginationID")
pageparam := c.FormValue("currpage" + paginationID)
currpage, err := strconv.Atoi(pageparam)
if err != nil {
return err
}
tableData, totalPage, err := tdp.TabDaftarPesertaServices.GetListDaftarPesertaMCU(id, currpage, 10)
if err != nil {
return err
}
table := corporate_mcudetail.TableDaftarPeserta(
tableData,
tableID,
"/corp/dashboard_pic/detail/"+id+"/tabdaftarpeserta/openreport",
"#"+dialogReportBodyID,
"#tableID, #paginationID, #dialogReportID, #dialogReportBodyID, #dialogGenPassID, #dialogGenPassBodyID, #dialogAkunID, #dialogAkunBodyID",
"outerHTML",
"/corp/dashboard_pic/detail/"+id+"/tabdaftarpeserta/openviewakun",
"#"+dialogAkunBodyID,
"#tableID, #paginationID, #dialogReportID, #dialogReportBodyID, #dialogGenPassID, #dialogGenPassBodyID, #dialogAkunID, #dialogAkunBodyID",
"outerHTML",
"/corp/dashboard_pic/detail/"+id+"/tabdaftarpeserta/opendetail",
"#"+dialogDetailBodyID,
"#tableID, #paginationID, #dialogReportID, #dialogReportBodyID, #dialogGenPassID, #dialogGenPassBodyID, #dialogAkunID, #dialogAkunBodyID, #dialogDetailID, #dialogDetailBodyID",
"outerHTML",
)
pagination := pagination.PaginationV3(
totalPage,
currpage,
"/corp/dashboard_pic/detail/"+id+"/tabdaftarpeserta/changepage",
paginationID,
"#tableID, #paginationID, #loading-parent, #loading-child, #loading-spinner, #loadingcontent, #dialogGenPassID, #dialogGenPassBodyID, #dialogAkunID, #dialogAkunBodyID, #dialogReportID, #dialogReportBodyID, #dialogDetailID, #dialogDetailBodyID, #currPage"+paginationID,
"#contentlayout",
"outerHTML", "", "",
corporate_mcudetail.BeforeRequestContent(),
corporate_mcudetail.AfterRequestContent(),
)
clayout := corporate_mcudetail.ContentLayout(table, pagination)
return utils.View(c, clayout)
}
func (tdp *TabDaftarPesertaHandlers) HandleOpenDetail(c echo.Context) error {
idx := c.QueryParam("idx")
dialogDetailID := c.QueryParam("dialogDetailID")
dialogDetailBodyID := c.QueryParam("dialogDetailBodyID")
detailData, err := tdp.TabDaftarPesertaServices.DetailTestdanPaket(idx)
if err != nil {
tab := corporate_mcudetail.TableDetailMCU([]models.TableTestPaket{})
mod := corporate_mcudetail.ModalRptBody(
dialogDetailBodyID,
tab,
corporate_mcudetail.JsShowModal("#"+dialogDetailID),
)
return utils.View(c, mod)
}
tablecomponent := corporate_mcudetail.TableDetailMCU(detailData)
detailBody := corporate_mcudetail.ModalRptBody(
dialogDetailBodyID,
tablecomponent,
corporate_mcudetail.JsShowModal("#"+dialogDetailID),
)
return utils.View(c, detailBody)
}

View File

@@ -5,7 +5,7 @@ import (
"cpone/models"
"cpone/utils"
corporate_mcudetail "cpone/views/corporate/mcu/mcutab"
"encoding/json"
"strings"
"github.com/a-h/templ"
"github.com/labstack/echo/v4"
@@ -15,6 +15,12 @@ import (
type TabKelainanFisikServices interface {
GetKelainanFisikBMI(mcuID string) (models.Piechart, error)
GetKelainanFisikHipertensi(mcuID string) (models.Piechart, error)
GetKelainanFisikRefraksi(mcuID string) (models.Piechart, error)
GetKelainanFisikPresentase(mcuID string) (models.Barchart, error)
GetKelFisikAlkohol(mcuID string) (models.Piechart, error)
GetKelFisikMerokok(mcuID string) (models.Piechart, error)
GetKelFisikOlahraga(mcuID string) (models.Piechart, error)
GetChartRenderFisik(mcuID string) ([]models.McuTabModels, error)
}
type TabKelainanFisikHandler struct {
@@ -32,41 +38,32 @@ func (tkf *TabKelainanFisikHandler) HandleShowTabKelainanFisik(c echo.Context) e
logger.Info("Tab Kelainan Fisik")
id := c.Param("id")
logger.Info("Params", zap.Any("id", id))
bmi, err := tkf.TabKelainanFisikServices.GetKelainanFisikBMI(id)
chartsxs := []templ.Component{}
chartsmd := []templ.Component{}
chartslg := []templ.Component{}
tablist, err := tkf.TabKelainanFisikServices.GetChartRenderFisik(id)
if err != nil {
return err
}
hiper, err := tkf.TabKelainanFisikServices.GetKelainanFisikHipertensi(id)
if err != nil {
return err
}
bmijson, err := json.MarshalIndent(bmi, "", " ")
if err != nil {
return err
}
hiperjson, err := json.MarshalIndent(hiper, "", " ")
if err != nil {
return err
}
chartsxs := []templ.Component{
chart.ShowChartFixed("bmixs", string(bmijson), "400px", "450px"),
chart.ShowChartFixed("hprxs", string(hiperjson), "400px", "450px"),
}
chartsmd := []templ.Component{
chart.ShowChartFixed("bmimd", string(bmijson), "450px", "450px"),
chart.ShowChartFixed("hprmd", string(hiperjson), "450px", "450px"),
}
chartslg := []templ.Component{
chart.ShowChartFixed("bmilg", string(bmijson), "600px", "450px"),
chart.ShowChartFixed("hprlg", string(hiperjson), "600px", "450px"),
for _, d := range tablist {
chartsxs = append(chartsxs, chart.ShowChartResponsiveWidth(
strings.ToLower(strings.ReplaceAll(d.Mcu_ImageGrafikName+"xs", " ", "")),
d.Mcu_ImageGrafikJsonRender,
"450px",
))
chartsmd = append(chartsmd, chart.ShowChartResponsiveWidth(
strings.ToLower(strings.ReplaceAll(d.Mcu_ImageGrafikName+"md", " ", "")),
d.Mcu_ImageGrafikJsonRender,
"450px",
))
chartslg = append(chartslg, chart.ShowChartResponsiveWidth(
strings.ToLower(strings.ReplaceAll(d.Mcu_ImageGrafikName+"lg", " ", "")),
d.Mcu_ImageGrafikJsonRender,
"450px",
))
}
content := corporate_mcudetail.Tabkelainanfisik(

View File

@@ -5,16 +5,16 @@ import (
"cpone/models"
"cpone/utils"
corporate_mcudetail "cpone/views/corporate/mcu/mcutab"
"encoding/json"
"strings"
"github.com/a-h/templ"
"github.com/labstack/echo/v4"
"go.uber.org/zap"
)
type TabKelainanGlobalServices interface {
GetKelainanGlobalMCU(mcuID string) (models.Barchart, error)
GetKelainanFisik(mcuID string) (models.Barchart, error)
GetKelainanGlobalV2(mcuID string) (models.Barchart, error)
GetChartRenderGlobal(mcuID string) ([]models.McuTabModels, error)
}
type TabKelainanGlobalHandler struct {
@@ -28,44 +28,33 @@ func NewTabKelainanGlobalHandler(tkg TabKelainanGlobalServices) *TabKelainanGlob
}
func (tkg *TabKelainanGlobalHandler) HandleShowTabKelainanGlobal(c echo.Context) error {
logger, _ := zap.NewProduction()
id := c.Param("id")
logger.Info("params", zap.Any("id", id))
chartsxs := []templ.Component{}
chartsmd := []templ.Component{}
chartslg := []templ.Component{}
kelmcu, err := tkg.TabKelainanGlobalServices.GetKelainanGlobalMCU(id)
tablist, err := tkg.TabKelainanGlobalServices.GetChartRenderGlobal(id)
if err != nil {
return err
}
kelfisik, err := tkg.TabKelainanGlobalServices.GetKelainanFisik(id)
if err != nil {
return err
}
klmcujson, err := json.MarshalIndent(kelmcu, "", " ")
if err != nil {
return err
}
klfisjson, err := json.MarshalIndent(kelfisik, "", " ")
if err != nil {
return err
}
chartsxs := []templ.Component{
chart.ShowChartFixed("chartmcuxs", string(klmcujson), "400px", "450px"),
chart.ShowChartFixed("chartfisikxs", string(klfisjson), "400px", "450px"),
}
chartsmd := []templ.Component{
chart.ShowChartFixed("chartmcumd", string(klmcujson), "500px", "450px"),
chart.ShowChartFixed("chartfisikmd", string(klfisjson), "500px", "450px"),
}
chartslg := []templ.Component{
chart.ShowChartFixed("chartmculg", string(klmcujson), "1000px", "450px"),
chart.ShowChartFixed("chartfisiklg", string(klfisjson), "1000px", "450px"),
for _, d := range tablist {
chartsxs = append(chartsxs, chart.ShowChartResponsiveWidth(
strings.ToLower(strings.ReplaceAll(d.Mcu_ImageGrafikName+"xs", " ", "")),
d.Mcu_ImageGrafikJsonRender,
"450px",
))
chartsmd = append(chartsmd, chart.ShowChartResponsiveWidth(
strings.ToLower(strings.ReplaceAll(d.Mcu_ImageGrafikName+"md", " ", "")),
d.Mcu_ImageGrafikJsonRender,
"450px",
))
chartslg = append(chartslg, chart.ShowChartResponsiveWidth(
strings.ToLower(strings.ReplaceAll(d.Mcu_ImageGrafikName+"lg", " ", "")),
d.Mcu_ImageGrafikJsonRender,
"450px",
))
}
content := corporate_mcudetail.TabKelainanGlobal(

View File

@@ -5,7 +5,7 @@ import (
"cpone/models"
"cpone/utils"
corporate_mcudetail "cpone/views/corporate/mcu/mcutab"
"encoding/json"
"strings"
"github.com/a-h/templ"
"github.com/labstack/echo/v4"
@@ -18,6 +18,7 @@ type TabKelainanLabServices interface {
GetGangguanFungsiHati(mcuID string) (models.BarchartV2, error)
GetGangguanMetabolismeLemak(mcuID string) (models.BarchartV2, error)
GetPeningkatanGlukosa(mcuID string) (models.BarchartV2, error)
GetChartRenderLab(mcuID string) ([]models.McuTabModels, error)
}
type TabKelainanLabHandler struct {
@@ -33,94 +34,34 @@ func NewTabKelainanLabHandler(tkl TabKelainanLabServices) *TabKelainanLabHandler
func (tkl *TabKelainanLabHandler) HandleShowTabKelainanLab(c echo.Context) error {
id := c.Param("id")
datapre, err := tkl.TabKelainanLabServices.GetDataPresentaseKelainanLab(id)
tablist, err := tkl.TabKelainanLabServices.GetChartRenderLab(id)
if err != nil {
return err
}
hematologi, err := tkl.TabKelainanLabServices.GetHematologi(id)
if err != nil {
return err
}
chartsxs := []templ.Component{}
chartsmd := []templ.Component{}
chartslg := []templ.Component{}
urinalisa, err := tkl.TabKelainanLabServices.GetUrinalisa(id)
if err != nil {
return err
}
hati, err := tkl.TabKelainanLabServices.GetGangguanFungsiHati(id)
if err != nil {
return err
}
lemak, err := tkl.TabKelainanLabServices.GetGangguanMetabolismeLemak(id)
if err != nil {
return err
}
glukosa, err := tkl.TabKelainanLabServices.GetPeningkatanGlukosa(id)
if err != nil {
return err
}
dataprejson, err := json.MarshalIndent(datapre, "", " ")
if err != nil {
return err
}
hemajson, err := json.MarshalIndent(hematologi, "", " ")
if err != nil {
return err
}
urinjson, err := json.MarshalIndent(urinalisa, "", " ")
if err != nil {
return err
}
hatijson, err := json.MarshalIndent(hati, "", " ")
if err != nil {
return err
}
lemakjson, err := json.MarshalIndent(lemak, "", " ")
if err != nil {
return err
}
glukosjson, err := json.MarshalIndent(glukosa, "", " ")
if err != nil {
return err
}
chartsxs := []templ.Component{
chart.ShowChartFixed("dataprexs", string(dataprejson), "400px", "450px"),
chart.ShowChartFixed("hemaxs", string(hemajson), "400px", "450px"),
chart.ShowChartFixed("urinxs", string(urinjson), "400px", "450px"),
chart.ShowChartFixed("hatixs", string(hatijson), "400px", "450px"),
chart.ShowChartFixed("lemakxs", string(lemakjson), "400px", "450px"),
chart.ShowChartFixed("glukosxs", string(glukosjson), "400px", "450px"),
}
chartsmd := []templ.Component{
chart.ShowChartFixed("datapremd", string(dataprejson), "500px", "450px"),
chart.ShowChartFixed("hemamd", string(hemajson), "500px", "450px"),
chart.ShowChartFixed("urinmd", string(urinjson), "500px", "450px"),
chart.ShowChartFixed("hatimd", string(hatijson), "500px", "450px"),
chart.ShowChartFixed("lemakmd", string(lemakjson), "500px", "450px"),
chart.ShowChartFixed("glukosmd", string(glukosjson), "500px", "450px"),
}
chartslg := []templ.Component{
chart.ShowChartFixed("hemalg", string(hemajson), "600px", "450px"),
chart.ShowChartFixed("urinlg", string(urinjson), "600px", "450px"),
chart.ShowChartFixed("hatilg", string(hatijson), "600px", "450px"),
chart.ShowChartFixed("lemaklg", string(lemakjson), "600px", "450px"),
chart.ShowChartFixed("glukoslg", string(glukosjson), "600px", "450px"),
for _, d := range tablist {
chartsxs = append(chartsxs, chart.ShowChartResponsiveWidth(
strings.ToLower(strings.ReplaceAll(d.Mcu_ImageGrafikName+"xs", " ", "")),
d.Mcu_ImageGrafikJsonRender,
"450px",
))
chartsmd = append(chartsmd, chart.ShowChartResponsiveWidth(
strings.ToLower(strings.ReplaceAll(d.Mcu_ImageGrafikName+"md", " ", "")),
d.Mcu_ImageGrafikJsonRender,
"450px",
))
chartslg = append(chartslg, chart.ShowChartResponsiveWidth(
strings.ToLower(strings.ReplaceAll(d.Mcu_ImageGrafikName+"lg", " ", "")),
d.Mcu_ImageGrafikJsonRender,
"450px",
))
}
content := corporate_mcudetail.TabKelainanLab(
chart.ShowChartFixed("dataprelg", string(dataprejson), "1000px", "450px"),
chartsxs,
chartsmd,
chartslg,

View File

@@ -5,7 +5,7 @@ import (
"cpone/models"
"cpone/utils"
corporate_mcudetail "cpone/views/corporate/mcu/mcutab"
"encoding/json"
"strings"
"github.com/a-h/templ"
"github.com/labstack/echo/v4"
@@ -14,6 +14,10 @@ import (
type TabKelainanNonLabServices interface {
GetDataKelNonLab(mcuID string) (models.Barchart, error)
GetThoraxPA(mcuID string) (models.BarchartV2, error)
GetGangguanJantung(mcuID string) (models.BarchartV2, error)
GetAutospirometri(mcuID string) (models.BarchartV2, error)
GetPendengaran(mcuID string) (models.BarchartV2, error)
GetChartRenderNonLab(mcuID string) ([]models.McuTabModels, error)
}
type TabKelainanNonLabHandler struct {
@@ -29,39 +33,31 @@ func NewTabKelainanNonLabHandler(tknl TabKelainanNonLabServices) *TabKelainanNon
func (tknl *TabKelainanNonLabHandler) HandleShowTabKelainanNonLab(c echo.Context) error {
id := c.Param("id")
datapre, err := tknl.TabKelainanNonLabServices.GetDataKelNonLab(id)
chartsxs := []templ.Component{}
chartsmd := []templ.Component{}
chartslg := []templ.Component{}
tablist, err := tknl.TabKelainanNonLabServices.GetChartRenderNonLab(id)
if err != nil {
return err
}
thorax, err := tknl.TabKelainanNonLabServices.GetThoraxPA(id)
if err != nil {
return err
}
dataprejson, err := json.MarshalIndent(datapre, "", " ")
if err != nil {
return err
}
thrxjson, err := json.MarshalIndent(thorax, "", " ")
if err != nil {
return err
}
chartsxs := []templ.Component{
chart.ShowChartFixed("datanonxs", string(dataprejson), "400px", "450px"),
chart.ShowChartFixed("thoraxxs", string(thrxjson), "400px", "450px"),
}
chartsmd := []templ.Component{
chart.ShowChartFixed("datanonmd", string(dataprejson), "500px", "450px"),
chart.ShowChartFixed("thoraxmd", string(thrxjson), "500px", "450px"),
}
chartslg := []templ.Component{
chart.ShowChartFixed("datanonlg", string(dataprejson), "1000px", "450px"),
chart.ShowChartFixed("thoraxlg", string(thrxjson), "600px", "450px"),
for _, d := range tablist {
chartsxs = append(chartsxs, chart.ShowChartResponsiveWidth(
strings.ToLower(strings.ReplaceAll(d.Mcu_ImageGrafikName+"xs", " ", "")),
d.Mcu_ImageGrafikJsonRender,
"450px",
))
chartsmd = append(chartsmd, chart.ShowChartResponsiveWidth(
strings.ToLower(strings.ReplaceAll(d.Mcu_ImageGrafikName+"md", " ", "")),
d.Mcu_ImageGrafikJsonRender,
"450px",
))
chartslg = append(chartslg, chart.ShowChartResponsiveWidth(
strings.ToLower(strings.ReplaceAll(d.Mcu_ImageGrafikName+"lg", " ", "")),
d.Mcu_ImageGrafikJsonRender,
"450px",
))
}
content := corporate_mcudetail.TabKelainanNonLab(

View File

@@ -5,7 +5,7 @@ import (
"cpone/models"
"cpone/utils"
corporate_mcudetail "cpone/views/corporate/mcu/mcutab"
"encoding/json"
"strings"
"github.com/a-h/templ"
"github.com/labstack/echo/v4"
@@ -16,6 +16,7 @@ type TabKepersertaanServices interface {
GetTotalKepesertaanMCU(mcuID string) (models.Piechart, error)
GetKepesertaanByGender(mcuID string) (models.Piechart, error)
GetKepesertaanByUmur(mcuID string) (models.Piechart, error)
GetChartRenderPeserta(mcuID string) ([]models.McuTabModels, error)
}
type TabKepersertaanHandler struct {
@@ -35,52 +36,31 @@ func (tkh *TabKepersertaanHandler) HandleShowTabKepesertaan(c echo.Context) erro
id := c.Param("id")
logger.Info("Params", zap.Any("id", id))
peserta, err := tkh.TabKepersertaanServices.GetTotalKepesertaanMCU(id)
tablist, err := tkh.TabKepersertaanServices.GetChartRenderPeserta(id)
if err != nil {
return err
}
gender, err := tkh.TabKepersertaanServices.GetKepesertaanByGender(id)
if err != nil {
return err
}
chartsxs := []templ.Component{}
chartsmd := []templ.Component{}
chartslg := []templ.Component{}
umur, err := tkh.TabKepersertaanServices.GetKepesertaanByUmur(id)
if err != nil {
return err
}
totaljson, err := json.MarshalIndent(peserta, "", " ")
if err != nil {
return err
}
genderjson, err := json.MarshalIndent(gender, "", " ")
if err != nil {
return err
}
umurjson, err := json.MarshalIndent(umur, "", " ")
if err != nil {
return err
}
chartsxs := []templ.Component{
chart.ShowChartFixed("charttotalxs", string(totaljson), "400px", "450px"),
chart.ShowChartFixed("chartgenderxs", string(genderjson), "400px", "450px"),
chart.ShowChartFixed("chartumurxs", string(umurjson), "400px", "450px"),
}
chartsmd := []templ.Component{
chart.ShowChartFixed("charttotalmd", string(totaljson), "450px", "450px"),
chart.ShowChartFixed("chartgendermd", string(genderjson), "450px", "450px"),
chart.ShowChartFixed("chartumurmd", string(umurjson), "450px", "450px"),
}
chartslg := []templ.Component{
chart.ShowChartFixed("charttotal", string(totaljson), "600px", "450px"),
chart.ShowChartFixed("chartgender", string(genderjson), "600px", "450px"),
chart.ShowChartFixed("chartumur", string(umurjson), "600px", "450px"),
for _, d := range tablist {
chartsxs = append(chartsxs, chart.ShowChartResponsiveWidth(
strings.ToLower(strings.ReplaceAll(d.Mcu_ImageGrafikName+"xs", " ", "")),
d.Mcu_ImageGrafikJsonRender,
"450px",
))
chartsmd = append(chartsmd, chart.ShowChartResponsiveWidth(
strings.ToLower(strings.ReplaceAll(d.Mcu_ImageGrafikName+"md", " ", "")),
d.Mcu_ImageGrafikJsonRender,
"450px",
))
chartslg = append(chartslg, chart.ShowChartResponsiveWidth(
strings.ToLower(strings.ReplaceAll(d.Mcu_ImageGrafikName+"lg", " ", "")),
d.Mcu_ImageGrafikJsonRender,
"450px",
))
}
content := corporate_mcudetail.TabKepesertaan(

View File

@@ -14,6 +14,9 @@ type TabKesimpulanServices interface {
GetListKesimpulanLab(id string) ([]models.ModelKesimpulanLab, error)
GetListKesimpulanNonLab(id string) ([]models.ModelKesimpulanLab, error)
GetListKesimpulanFisik(id string) ([]models.ModelKesimpulanLab, error)
GetListKesimpulanLabV2(id string) ([]models.ModelKesimpulanLab, error)
GetListKesimpulanNonLabV2(id string) ([]models.ModelKesimpulanLab, error)
GetListKesimpulanFisikV2(id string) ([]models.ModelKesimpulanLab, error)
}
type TabKesimpulanHandler struct {
@@ -32,7 +35,7 @@ func (tkh *TabKesimpulanHandler) HandleShowTabKesimpulanScreen(c echo.Context) e
tableID := utils.GenerateRandomID("tablebody")
id := c.Param("id")
dataLab, err := tkh.TabKesimpulanServices.GetListKesimpulanLab(id)
dataLab, err := tkh.TabKesimpulanServices.GetListKesimpulanLabV2(id)
if err != nil {
defer logger.Sync()
logger.Info("ERROR GET LIST LAB",
@@ -43,7 +46,7 @@ func (tkh *TabKesimpulanHandler) HandleShowTabKesimpulanScreen(c echo.Context) e
}
tableComponentLab := corporate_mcudetail.CardTableKesimpulan("3 Kelainan Pemeriksaan Lab terbesar :", dataLab, tableID)
dataNonLab, err := tkh.TabKesimpulanServices.GetListKesimpulanNonLab(id)
dataNonLab, err := tkh.TabKesimpulanServices.GetListKesimpulanNonLabV2(id)
if err != nil {
defer logger.Sync()
logger.Info("ERROR GET LIST NON LAB",
@@ -54,7 +57,7 @@ func (tkh *TabKesimpulanHandler) HandleShowTabKesimpulanScreen(c echo.Context) e
}
tableComponentNonLab := corporate_mcudetail.CardTableKesimpulan("3 Kelainan Pemeriksaan Non Lab terbesar :", dataNonLab, tableID)
dataFisik, err := tkh.TabKesimpulanServices.GetListKesimpulanFisik(id)
dataFisik, err := tkh.TabKesimpulanServices.GetListKesimpulanFisikV2(id)
if err != nil {
defer logger.Sync()
logger.Info("ERROR GET LIST FISIK",

View File

@@ -17,10 +17,9 @@ import (
type PatientService interface {
GetDashboardPatientBreadcrumb(title string) (models.BreadCrumbV1, error)
ListingData(search string, date string, patID string, corpId string, currentpage int, rowperpage int) ([]models.DashboardPatient, int, error)
GetListtingData(email string, currentpage int, rowperpage int) ([]models.DashboardPatient, int, error)
GetPatientData(email string) (string, error)
GetReportMcu(orderheaderID string) ([]models.TabViewReportMcu, error)
GetListReportPesertaV4(orderheaderID string, staffname string) ([]models.TabViewReportMcu, error)
}
func NewPatientHandler(us PatientService) *PatientHandler {
@@ -220,7 +219,11 @@ func (ph *PatientHandler) HandleOpenReport(c echo.Context) error {
dialogBodyID := c.QueryParam("dialogBodyID")
logger.Info("params", zap.Any("id", id))
tabData, err := ph.PatientService.GetReportMcu(id)
userCok := c.Get("user").(*jwt.Token)
claims := userCok.Claims.(jwt.MapClaims)
staffname := claims["M_StaffName"].(string)
newtabdata, err := ph.PatientService.GetListReportPesertaV4(id, staffname)
if err != nil {
tab := corporate_patient.TabReportView([]models.TabViewReportMcu{})
mod := corporate_patient.ModalBody(
@@ -231,7 +234,7 @@ func (ph *PatientHandler) HandleOpenReport(c echo.Context) error {
return utils.View(c, mod)
}
tabcomponent := corporate_patient.TabReportView(tabData)
tabcomponent := corporate_patient.TabReportView(newtabdata)
modalBody := corporate_patient.ModalBody(
dialogBodyID,
tabcomponent,

View File

@@ -8,13 +8,13 @@ import (
"net/http"
"time"
"github.com/golang-jwt/jwt/v5"
"github.com/labstack/echo/v4"
"go.uber.org/zap"
)
type LoginService interface {
Login(username string, password string) (models.ResponseApi, error)
MultiSignIn(username string, password string) (models.Response, error)
MultiSignIn(username string, password string, host string) (models.Response, error)
}
func NewLoginHandler(us LoginService) *LoginHandler {
@@ -36,31 +36,26 @@ func (lh *LoginHandler) HandlerShowLogin(c echo.Context) error {
func (lh *LoginHandler) HandleSignIn(c echo.Context) error {
logger, _ := zap.NewProduction()
host := c.Request().Host
username := c.FormValue("username")
password := c.FormValue("password")
defer logger.Sync()
logger.Info("Params", zap.Any("username", username), zap.Any("pass", password))
resp, err := lh.LoginService.MultiSignIn(username, password)
resp, err := lh.LoginService.MultiSignIn(username, password, host)
if err != nil {
defer logger.Sync()
logger.Info("Error", zap.Any("error multi signin", err))
si := public_login.ShowLogin("Login ", public_login.MainLogin(false), public_login.CssLogin(), public_login.JsLogin())
si := public_login.ShowLogin("Login", public_login.MainLogin(false), public_login.CssLogin(), public_login.JsLogin())
return utils.View(c, si)
// loginform := public_login.FormSignin(false)
// return utils.View(c, loginform)
}
if resp.Status == "ERR" {
defer logger.Sync()
logger.Info("Error", zap.Any("ERR", resp.Status))
si := public_login.ShowLogin("Login ", public_login.MainLogin(false), public_login.CssLogin(), public_login.JsLogin())
si := public_login.ShowLogin("Login", public_login.MainLogin(false), public_login.CssLogin(), public_login.JsLogin())
return utils.View(c, si)
// loginform := public_login.FormSignin(false)
// return utils.View(c, loginform)
}
defer logger.Sync()
@@ -85,9 +80,6 @@ func (lh *LoginHandler) HandleSignIn(c echo.Context) error {
si := public_login.ShowLogin("Login ", public_login.MainLogin(false), public_login.CssLogin(), public_login.JsLogin())
return utils.View(c, si)
// loginform := public_login.FormSignin(false)
// return utils.View(c, loginform)
}
cookie := new(http.Cookie)
@@ -108,7 +100,7 @@ func (lh *LoginHandler) HandleSignIn(c echo.Context) error {
localStorage.setItem("user", user);
htmx.on("htmx:configRequest", (e)=> {
e.detail.headers["Authentication"] = "Bearer ` + resp.Data.Token + `"
e.detail.headers["Authorization"] = "Bearer ` + resp.Data.Token + `"
})
setTimeout(() => {
@@ -123,7 +115,7 @@ func (lh *LoginHandler) HandleSignIn(c echo.Context) error {
func (lh *LoginHandler) HandleRedirect(c echo.Context) error {
logger, _ := zap.NewProduction()
url := c.QueryParam("url")
token := c.Request().Header.Get("Authentication")
token := c.Request().Header.Get("Authorization")
logger.Info("params", zap.Any("url", url), zap.Any("token", token))
c.Response().Header().Set("HX-Redirect", url)
@@ -157,3 +149,43 @@ func (lh *LoginHandler) HandleSignOut(c echo.Context) error {
c.Response().Header().Set("HX-Trigger", "script")
return c.String(http.StatusOK, ret)
}
func (lh *LoginHandler) HandleAutoLoginPage(c echo.Context) error {
userToken := c.Get("user").(*jwt.Token)
token := userToken.Raw
claims := userToken.Claims.(jwt.MapClaims)
userGroup := claims["M_UserGroupDashboard"].(string)
cookie := new(http.Cookie)
cookie.Name = "token"
cookie.Value = token
cookie.Path = "/"
cookie.HttpOnly = true
c.SetCookie(cookie)
var url string
switch userGroup {
case "cpone":
url = "/one-ui"
case "pic":
url = "/corp/dashboard_pic"
case "patient":
url = "/corp/dashboard_pat"
default:
url = "/one-ui"
}
redirect := `
<script>
setTimeout(() => {
htmx.ajax('GET', '/login/redirect?url=` + url + `', {
headers: {
Authorization: 'Bearer ` + token + `'
}
})
}, 200)
</script>
`
c.Response().Header().Set("HX-Trigger", "script")
return c.String(http.StatusOK, redirect)
}

View File

@@ -0,0 +1,16 @@
package public_handlers
import (
customtoastv2 "cpone/component/toastbootstrap"
"cpone/utils"
"github.com/labstack/echo/v4"
)
func HandlerHideToast(c echo.Context) error {
toastComponent := customtoastv2.CustomToastV2Hide()
si := toastComponent
return utils.View(c, si)
}

View File

@@ -64,6 +64,7 @@ func SetupRoutesEmployee(app *echo.Echo, e *dev_handlers.EmployeeHandler) {
func SetupRoutesProject(app *echo.Echo) {
}
func SetupRoutesPublic(app *echo.Echo, appStore db.AppStore) {
public := app.Group("/")
l := public_services.NewServicesLandingPage(public_services.LandingPage{}, appStore)
@@ -71,8 +72,8 @@ func SetupRoutesPublic(app *echo.Echo, appStore db.AppStore) {
public.GET("landingpage", lh.ShowLandingPage)
public.GET("home", lh.ShowLandingPage)
public.GET("home/login", lh.HandleBtnLogin)
// loginHdr := public_handlers.NewLoginHandler(l)
// public.GET("login", loginHdr.HandlerShowLogin)
public.GET("home/hidetoast", public_handlers.HandlerHideToast)
loginServ := public_services.NewServicesLogin(appStore)
loginHadlr := public_handlers.NewLoginHandler(loginServ)
@@ -80,6 +81,7 @@ func SetupRoutesPublic(app *echo.Echo, appStore db.AppStore) {
public.POST("login/signin", loginHadlr.HandleSignIn)
public.GET("login/redirect", loginHadlr.HandleRedirect)
public.GET("login/signout", loginHadlr.HandleSignOut)
public.POST("login/autologin", loginHadlr.HandleAutoLoginPage, auth.IsAlreadyLogin)
// kartu kontrol
publicKartuKontrolServices := public_services.NewServicesKartuKontrol(appStore)
@@ -101,6 +103,7 @@ func SetupRoutesPublic(app *echo.Echo, appStore db.AppStore) {
// redirect to survey mcu page
public.GET("redirectsurveymcu", publicKartuKontrolhandlers.HandlerRedirectToSurveyMcu)
}
func SetupRoutesCorporate(app *echo.Echo, appStore db.AppStore) {
corp := app.Group("/corp", auth.IsLoggedIn)
// corp := app.Group("/corp")
@@ -108,6 +111,12 @@ func SetupRoutesCorporate(app *echo.Echo, appStore db.AppStore) {
lh := corporate_handlers.NewCompanyHandler(l)
corp.GET("/company", lh.ShowCompany)
// ganti password
accountService := corporate_services.NewAccountService(appStore)
accountHandler := corporate_handlers.NewAccountHandler(accountService)
corp.POST("/dashboard_pic/tutupgantipassword", accountHandler.HandleCloseChangePassword)
corp.POST("/dashboard_pic/gantipassword", accountHandler.HandleChangePassword)
// dashboard_pic
dashbrdPicServ := corporate_services.NewDashboardPicServices(appStore)
dashbrdPicHandl := corporate_handlers.NewDashboardPicHandler(dashbrdPicServ)
@@ -157,6 +166,13 @@ func SetupRoutesCorporate(app *echo.Echo, appStore db.AppStore) {
corp.GET("/dashboard_pic/detail/:id/tabdaftarpeserta", daftarpesertaHandl.HandleShowTabDaftarPeserta)
corp.GET("/dashboard_pic/detail/:id/tabdaftarpeserta/changepage", daftarpesertaHandl.HandlePagination)
corp.GET("/dashboard_pic/detail/:id/tabdaftarpeserta/openreport", daftarpesertaHandl.HandleOpenReportDialog)
corp.POST("/dashboard_pic/detail/:id/tabdaftarpeserta/dialoggenpass", daftarpesertaHandl.HandleDialogGenPass)
corp.POST("/dashboard_pic/detail/:id/tabdaftarpeserta/closegenpass", daftarpesertaHandl.HandleCloseDialogGenPass)
corp.GET("/dashboard_pic/detail/:id/tabdaftarpeserta/openviewakun", daftarpesertaHandl.HandleOpenViewAkun)
corp.POST("/dashboard_pic/detail/:id/tabdaftarpeserta/closeviewakun", daftarpesertaHandl.HandleCloseViewAkun)
corp.POST("/dashboard_pic/detail/:id/tabdaftarpeserta/viewakun", daftarpesertaHandl.HandleAkun)
corp.POST("/dashboard_pic/detail/:id/tabdaftarpeserta/reload", daftarpesertaHandl.HandleContentReload)
corp.GET("/dashboard_pic/detail/:id/tabdaftarpeserta/opendetail", daftarpesertaHandl.HandleOpenDetail)
// tab keuangan
keuanganService := mcu_corporate_services.NewTabKeuanganServices(appStore)

View File

@@ -151,6 +151,29 @@ templ DashboardLayout(
@navbaruser
</div>
<div class="mt-16">
// toast
<div class="toast-top-right" id="container-system-notification" style="position: absolute; top: 1vh; right: 0vw; z-index: 999;">
<!-- toast success -->
<div
id="notification-001"
class="toast fade hide"
role="alert"
aria-live="assertive"
aria-atomic="true"
>
<div class="toast-header bg-success text-white">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ep mr-2 icon-xl" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 1024 1024" data-icon="ep:success-filled"><path fill="currentColor" d="M512 64a448 448 0 1 1 0 896a448 448 0 0 1 0-896m-55.808 536.384l-99.52-99.584a38.4 38.4 0 1 0-54.336 54.336l126.72 126.72a38.27 38.27 0 0 0 54.336 0l262.4-262.464a38.4 38.4 0 1 0-54.272-54.336z"></path></svg>
<strong class="mr-auto">Success</strong>
<small class="text-muted text-white">just now</small>
<button type="button" class="ml-2 mb-1 close" data-dismiss="toast" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="toast-body bg-success-transparent">
This is a success toast.
</div>
</div>
</div>
{ children... }
</div>
</div>

View File

@@ -58,7 +58,7 @@ func DashboardLayout(
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</div><div class=\"mt-16\">")
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</div><div class=\"mt-16\"><div class=\"toast-top-right\" id=\"container-system-notification\" style=\"position: absolute; top: 1vh; right: 0vw; z-index: 999;\"><!-- toast success --><div id=\"notification-001\" class=\"toast fade hide\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\"><div class=\"toast-header bg-success text-white\"><svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" aria-hidden=\"true\" role=\"img\" class=\"iconify iconify--ep mr-2 icon-xl\" width=\"1em\" height=\"1em\" preserveAspectRatio=\"xMidYMid meet\" viewBox=\"0 0 1024 1024\" data-icon=\"ep:success-filled\"><path fill=\"currentColor\" d=\"M512 64a448 448 0 1 1 0 896a448 448 0 0 1 0-896m-55.808 536.384l-99.52-99.584a38.4 38.4 0 1 0-54.336 54.336l126.72 126.72a38.27 38.27 0 0 0 54.336 0l262.4-262.464a38.4 38.4 0 1 0-54.272-54.336z\"></path></svg> <strong class=\"mr-auto\">Success</strong> <small class=\"text-muted text-white\">just now</small> <button type=\"button\" class=\"ml-2 mb-1 close\" data-dismiss=\"toast\" aria-label=\"Close\"><span aria-hidden=\"true\">×</span></button></div><div class=\"toast-body bg-success-transparent\">This is a success toast.\r</div></div></div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}

6
models/account.models.go Normal file
View File

@@ -0,0 +1,6 @@
package models
type ResponseStatus struct {
Status string `json:"status"`
Message string `json:"message"`
}

View File

@@ -49,6 +49,7 @@ type Piechart struct {
type Barchart struct {
Title struct {
Text string `json:"text"`
Left string `json:"left"`
} `json:"title"`
Dataset struct {
Source [][]interface{} `json:"source"`
@@ -91,6 +92,16 @@ type Barchart struct {
Type string `json:"type"`
} `json:"axisPointer"`
} `json:"tooltip"`
Graphic struct {
Type string `json:"type"`
Left string `json:"left"`
Top string `json:"top"`
Style struct {
Text string `json:"text"`
FontSize string `json:"fontSize"`
FontWeight string `json:"fontWeight"`
} `json:"style"`
} `json:"graphic"`
}
type BarDataset struct {
@@ -100,6 +111,7 @@ type BarDataset struct {
type BarchartV2 struct {
Title struct {
Text string `json:"text"`
Left string `json:"left"`
} `json:"title"`
Dataset struct {
Source [][]interface{} `json:"source"`
@@ -152,4 +164,14 @@ type BarchartV2 struct {
Type string `json:"type"`
} `json:"axisPointer"`
} `json:"tooltip"`
Graphic struct {
Type string `json:"type"`
Left string `json:"left"`
Top string `json:"top"`
Style struct {
Text string `json:"text"`
FontSize string `json:"fontSize"`
FontWeight string `json:"fontWeight"`
} `json:"style"`
} `json:"graphic"`
}

View File

@@ -12,16 +12,93 @@ type ModelMcuDaftarPeserta struct {
JenisKelamin string `db:"jenisKelamin"`
M_PatientDOB string `db:"M_PatientDOB"`
Age string `db:"age"`
AuthPatientEmail string `db:"authPatientEmail"`
AuthPatientIsActive string `db:"authPatientIsActive"`
Test_Paket string `db:"test_paket"`
List_Paket string `db:"list_paket"`
}
type ModelMcuPesertaReport struct {
type SoResultEntryReportModel struct {
So_ResultEntryID int `db:"So_ResultEntryID"`
So_ResultEntryT_OrderHeaderID int `db:"So_ResultEntryT_OrderHeaderID"`
So_ResultEntryT_OrderDetailID int `db:"So_ResultEntryT_OrderDetailID"`
So_ResultEntryNonlab_TemplateID int `db:"So_ResultEntryNonlab_TemplateID"`
So_ResultEntryNonlab_TemplateName string `db:"So_ResultEntryNonlab_TemplateName"`
Datetime string `db:"Datetime"`
}
type TabViewReportMcu struct {
Name string
Link string
}
type OrderReport struct {
M_OrderReportID int `db:"M_OrderReportID"`
M_OrderReportName string `db:"M_OrderReportName"`
M_OrderReportOrdering int `db:"M_OrderReportOrdering"`
M_OrderReportUrl string `db:"M_OrderReportUrl"`
M_OrderReportIsOrderHeader string `db:"M_OrderReportIsOrderHeader"`
M_OrderReportIsFisikUmum string `db:"M_OrderReportIsFisikUmum"`
M_OrderReportIsActive string `db:"M_OrderReportIsActive"`
Datetime string `db:"Datetime"`
}
type GeneratePasswordResponse struct {
Status string `json:"status"`
Message string `json:"message"`
}
type AuthPatient struct {
AuthPatientID int `db:"authPatientID"`
AuthPatientM_PatientID int `db:"authPatientM_PatientID"`
AuthPatientEmail string `db:"authPatientEmail"`
AuthPatientPassword string `db:"authPatientPassword"`
AuthPatientIsActive string `db:"authPatientIsActive"`
}
type GroupResultOrderModel struct {
Group_ResultID string `db:"Group_ResultID"`
Group_ResultName string `db:"Group_ResultName"`
Group_ResultResumeMcu string `db:"Group_ResultResumeMcu"`
Group_ResultOrderOrder string `db:"Group_ResultOrderOrder"`
Group_ResultUrl string `db:"Group_ResultUrl"`
Group_ResultIsOrderHeader string `db:"Group_ResultIsOrderHeader"`
Datetime string `db:"Datetime"`
}
type PatientMCU struct {
T_OrderHeaderID string `db:"T_OrderHeaderID"`
T_OrderHeaderLabNumber string `db:"T_OrderHeaderLabNumber"`
M_PatientID string `db:"M_PatientID"`
M_PatientName string `db:"M_PatientName"`
Datetime string `db:"Datetime"`
}
type SoRptData struct {
Rpt_name string `db:"rpt_name"`
So_id string `db:"so_id"`
Order_id string `db:"order_id"`
Datetime string `db:"Datetime"`
}
type ResumeMCU struct {
Mcu_ResumeID string `db:"Mcu_ResumeID"`
Datetime string `db:"Datetime"`
}
type DetailPaketMCU struct {
T_OrderDetailOrderT_PacketID string `db:"T_OrderDetailOrderT_PacketID"`
T_OrderDetailOrderT_PacketName string `db:"T_OrderDetailOrderT_PacketName"`
T_TestName string `db:"T_TestName"`
}
type DetailTestMCU struct {
T_OrderDetailOrderT_TestID string `db:"T_OrderDetailOrderT_TestID"`
T_OrderDetailOrderT_TestName string `db:"T_OrderDetailOrderT_TestName"`
}
type TableTestPaket struct {
Nomor int
NamaTest string
NamaPaket string
}

10
models/mcutab.models.go Normal file
View File

@@ -0,0 +1,10 @@
package models
type McuTabModels struct {
Mcu_ImageGrafikGroupResult string `db:"Mcu_ImageGrafikGroupResult"`
Mcu_ImageGrafikGroupMenu string `db:"Mcu_ImageGrafikGroupMenu"`
Mcu_ImageGrafikName string `db:"Mcu_ImageGrafikName"`
Mcu_ImageGrafikJsonRender string `db:"Mcu_ImageGrafikJsonRender"`
TabID string
TabName string
}

View File

@@ -9,3 +9,9 @@ type KelainanGlobalFisikModel struct {
Mcu_KelainanName string `db:"Mcu_KelainanName"`
Total int `db:"total"`
}
type KelainanGlobalModel struct {
Mcu_KelainanID string `db:"Mcu_KelainanID"`
Test string `db:"Test"`
Total int `db:"Total"`
}

View File

@@ -1,6 +1,7 @@
package models
type KelainanLabModel struct {
Mcu_KelainanName string `db:"Mcu_KelainanName"`
Mcu_KelainanID string `db:"Mcu_KelainanID"`
Mcu_KelainanName string `db:"Test"`
Total int `db:"total"`
}

View File

@@ -1,6 +1,7 @@
package models
type KelNonLabModel struct {
Kelainan string `db:"kelainan"`
Total int `db:"total"`
Mcu_KelainanID string `db:"Mcu_KelainanID"`
Test string `db:"Test"`
Total int `db:"total"`
}

View File

@@ -1,8 +1,8 @@
package models
type TotalPesertaModel struct {
Peserta int `db:"peserta"`
Mgm_McuTotalParticipant int `db:"Mgm_McuTotalParticipant"`
Peserta int `db:"peserta"`
Total int `db:"total"`
}
type GenderPesertaModel struct {

View File

@@ -0,0 +1,103 @@
package corporate_services
import (
"cpone/db"
"cpone/models"
"cpone/package/config"
"encoding/json"
"io"
"net/http"
"net/url"
)
type AccountService struct {
AccountStore db.AppStore
}
func NewAccountService(aStore db.AppStore) *AccountService {
return &AccountService{
AccountStore: aStore,
}
}
func (as *AccountService) ChangePasswordPIC(host string, token string, currPassword string, newPassword string) (models.ResponseStatus, error) {
var ret models.ResponseStatus
uri := "https://" + config.Data.Get("servername") + "/one-api/mockup/system/menu/change_password_pic"
params := url.Values{}
params.Add("new", newPassword)
params.Add("old", currPassword)
params.Add("token", token)
req, err := http.PostForm(uri, params)
if err != nil {
ret = models.ResponseStatus{
Status: "ERR",
Message: "error request change password",
}
return ret, err
}
defer req.Body.Close()
resp, err := io.ReadAll(req.Body)
if err != nil {
ret = models.ResponseStatus{
Status: "ERR",
Message: "error read response",
}
return ret, err
}
err = json.Unmarshal(resp, &ret)
if err != nil {
ret = models.ResponseStatus{
Status: "ERR",
Message: "error unmarshal response",
}
return ret, err
}
return ret, nil
}
func (as *AccountService) ChangePasswordPAT(token string, currPassword string, newPassword string) (models.ResponseStatus, error) {
var ret models.ResponseStatus
uri := "https://" + config.Data.Get("servername") + "/one-api/mockup/system/menu/change_password_pat"
params := url.Values{}
params.Add("new", newPassword)
params.Add("old", currPassword)
params.Add("token", token)
req, err := http.PostForm(uri, params)
if err != nil {
ret = models.ResponseStatus{
Status: "ERR",
Message: "error request change password",
}
return ret, err
}
defer req.Body.Close()
resp, err := io.ReadAll(req.Body)
if err != nil {
ret = models.ResponseStatus{
Status: "ERR",
Message: "error read response",
}
return ret, err
}
err = json.Unmarshal(resp, &ret)
if err != nil {
ret = models.ResponseStatus{
Status: "ERR",
Message: "error unmarshal response",
}
return ret, err
}
return ret, nil
}

View File

@@ -76,21 +76,24 @@ func (ea *DashboardPicServices) GetCorporateName(userID string) (string, error)
q := `
SELECT
c.CorporateName
FROM mgm_mcu mm
JOIN corporate c ON c.CorporateID = mm.Mgm_McuCorporateID
AND CorporateIsActive = 'Y'
WHERE mm.Mgm_McuID = ?
AND mm.Mgm_McuIsActive = 'Y'
CorporateName
FROM mgm_mcuuser
JOIN mgm_mcu ON Mgm_McuID = Mgm_McuUserMgm_McuID
JOIN corporate ON CorporateID = Mgm_McuCorporateID
WHERE Mgm_McuUserID = ?
`
if err := dbx.Handlex.Get(&corpName, q, userID); err != nil {
return "PT. ABC", err
}
if corpName == "" {
corpName = "Perusahaan A"
}
return corpName, nil
}
func (ea *DashboardPicServices) ListingDashboardPic(search string, startdate string, enddate string, currentpage int, rowperpage int) ([]models.DashboardPic, int, error) {
func (ea *DashboardPicServices) ListingDashboardPic(email string, search string, startdate string, enddate string, currentpage int, rowperpage int) ([]models.DashboardPic, int, error) {
logger, _ := zap.NewProduction()
var ret []models.DashboardPic
var totalData int
@@ -104,19 +107,19 @@ func (ea *DashboardPicServices) ListingDashboardPic(search string, startdate str
prmLabel := "%" + search + "%"
offset := (currentpage - 1) * rowperpage
// q := `
// SELECT COUNT(*)
// FROM mgm_mcu
// WHERE Mgm_McuIsActive = 'Y'
// AND Mgm_McuLabel LIKE ?
// AND Mgm_McuStartDate >= ?
// AND Mgm_McuEndDate <= ?
// `
// if err := dbx.Handlex.Get(&totalData, q, prmLabel, startdate, enddate); err != nil {
// return nil, 0, fmt.Errorf("error query get total data: %v", err)
// }
logger.Info("Params", zap.Any("email", email))
q := `
SELECT COUNT(*)
FROM mgm_mcu
WHERE Mgm_McuIsActive = 'Y'
AND Mgm_McuLabel LIKE ?
AND Mgm_McuStartDate >= ?
AND Mgm_McuEndDate <= ?
`
if err := dbx.Handlex.Get(&totalData, q, prmLabel, startdate, enddate); err != nil {
return nil, 0, fmt.Errorf("error query get total data: %v", err)
}
q = `
SELECT
Mgm_McuID,
Mgm_McuLabel,
@@ -130,17 +133,20 @@ func (ea *DashboardPicServices) ListingDashboardPic(search string, startdate str
DATE_FORMAT(Mgm_McuEndDate, '%d-%m-%Y') AS Mgm_McuEndDate,
Mgm_McuIsActive
FROM mgm_mcu
WHERE Mgm_McuIsActive = 'Y'
JOIN mgm_mcuuser ON Mgm_McuUserMgm_McuID = Mgm_McuID
WHERE Mgm_McuUserEmail = ?
AND Mgm_McuIsActive = 'Y'
AND Mgm_McuLabel LIKE ?
AND Mgm_McuStartDate >= ?
AND Mgm_McuEndDate <= ?
ORDER BY Mgm_McuID ASC
LIMIT ? OFFSET ?
`
if err := dbx.Handlex.Select(&ret, q, prmLabel, startdate, enddate, rowperpage, offset); err != nil {
if err := dbx.Handlex.Select(&ret, q, email, prmLabel, startdate, enddate, rowperpage, offset); err != nil {
return nil, 0, fmt.Errorf("error query get data: %v", err)
}
logger.Info("Resp", zap.Any("Respsone", ret))
totalData = len(ret)
logger.Info("Response", zap.Any("data", ret), zap.Any("total data", totalData))
totalPage := int(math.Ceil(float64(totalData) / float64(rowperpage)))
return ret, totalPage, nil

View File

@@ -4,6 +4,7 @@ import (
"cpone/db"
"cpone/models"
dbx "cpone/package/database"
"fmt"
)
type McuDetailServices struct {
@@ -63,3 +64,48 @@ func (mcud *McuDetailServices) GetBreadcrumb(id string) (models.BreadCrumbV1, er
return breadcrumb, nil
}
func (mcud *McuDetailServices) GetTabNameList(id string) ([]models.McuTabModels, error) {
var ret []models.McuTabModels
q := `
SELECT
Mcu_ImageGrafikGroupResult,
Mcu_ImageGrafikGroupMenu,
Mcu_ImageGrafikName,
Mcu_ImageGrafikJsonRender
FROM mgm_mcugrafik
JOIN mcu_image_grafik ON Mcu_ImageGrafikID = Mgm_McuGrafikMcu_ImageGrafikID
WHERE Mgm_McuGrafikMgm_McuID = ?
AND Mgm_McuGrafikIsActive = 'Y'
GROUP BY Mcu_ImageGrafikGroupMenu, Mcu_ImageGrafikGroupResult
ORDER BY Mcu_ImageGrafikID
`
if err := dbx.Handlex.Select(&ret, q, id); err != nil {
return ret, fmt.Errorf("error get data tab name: %v", err)
}
for i, d := range ret {
switch d.Mcu_ImageGrafikGroupMenu {
case "SUMMARY":
if d.Mcu_ImageGrafikGroupResult == "LAB" {
ret[i].TabID = "tabkelainanlab"
ret[i].TabName = "Kelainan Lab"
} else if d.Mcu_ImageGrafikGroupResult == "NONLAB" {
ret[i].TabID = "tabkelainannonlab"
ret[i].TabName = "Kelainan Non Lab"
} else {
ret[i].TabID = "tabkelainanfisik"
ret[i].TabName = "Kelainan Fisik"
}
case "GLOBAL":
ret[i].TabID = "tabkelainanglobal"
ret[i].TabName = "Kelainan Global"
case "PESERTA":
ret[i].TabID = "tabkepesertaan"
ret[i].TabName = "Peserta"
}
}
return ret, nil
}

View File

@@ -1,11 +1,17 @@
package mcu_corporate_services
import (
"bytes"
"cpone/db"
"cpone/models"
"cpone/package/config"
dbx "cpone/package/database"
"encoding/json"
"fmt"
"io"
"math"
"net/http"
"net/url"
"strconv"
"go.uber.org/zap"
@@ -21,8 +27,7 @@ func NewTabDaftarPesertaServices(uStore db.AppStore) *TabDaftarPesertaServices {
}
}
func (tdps *TabDaftarPesertaServices) GetListMcuDaftarPeserta(id string, currentpage int, rowperpage int) ([]models.ModelMcuDaftarPeserta, int, error) {
logger, _ := zap.NewProduction()
func (tdps *TabDaftarPesertaServices) GetListDaftarPesertaMCU(id string, currentpage int, rowperpage int) ([]models.ModelMcuDaftarPeserta, int, error) {
var listDaftarPeserta []models.ModelMcuDaftarPeserta
var totalData int
offset := (currentpage - 1) * rowperpage
@@ -37,110 +42,560 @@ func (tdps *TabDaftarPesertaServices) GetListMcuDaftarPeserta(id string, current
return nil, 0, fmt.Errorf("error querying database: %v", err)
}
query := `SELECT T_OrderHeaderID,
T_OrderHeaderDate,
T_OrderHeaderLabNumber,
T_OrderHeaderM_PatientAge,
M_PatientID,
M_PatientNoReg,
M_PatientName,
M_PatientGender,
CASE
WHEN M_PatientGender = 'male' THEN 'Laki - Laki'
WHEN M_PatientGender = 'female' THEN 'Perempuan'
ELSE ' '
END AS jenisKelamin,
M_PatientDOB,
FLOOR(DATEDIFF(CURDATE(), M_PatientDOB)/ 365.25) AS age
FROM t_orderheader
JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID
AND M_PatientIsActive = 'Y'
WHERE T_OrderHeaderIsActive = 'Y' AND T_OrderHeaderMgm_McuID = ?
query := `
SELECT *,
GROUP_CONCAT(test_paket) as list_paket
FROM (
SELECT
T_OrderHeaderID,
T_OrderHeaderDate,
IFNULL(T_OrderHeaderLabNumber, 0) AS T_OrderHeaderLabNumber,
T_OrderHeaderM_PatientAge,
M_PatientID,
M_PatientNoReg,
M_PatientName,
M_PatientGender,
CASE
WHEN M_PatientGender = 'male' THEN 'Laki - Laki'
WHEN M_PatientGender = 'female' THEN 'Perempuan'
ELSE ' '
END AS jenisKelamin,
M_PatientDOB,
FLOOR(DATEDIFF(CURDATE(), M_PatientDOB)/ 365.25) AS age,
IFNULL(authPatientEmail, "none") AS authPatientEmail,
IFNULL(authPatientIsActive, "N") AS authPatientIsActive,
CASE
WHEN T_OrderDetailOrderIsPacket = 'Y' THEN T_OrderDetailOrderT_PacketName
ELSE T_OrderDetailOrderT_TestName
END AS test_paket
FROM t_orderheader
JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID AND M_PatientIsActive = 'Y'
JOIN t_orderdetailorder ON T_OrderDetailOrderT_OrderHeaderID = T_OrderHeaderID
AND T_OrderDetailOrderIsActive = 'Y'
LEFT JOIN auth_patient ON M_PatientID = authPatientM_PatientID AND authPatientIsActive = 'Y'
WHERE T_OrderHeaderIsActive = 'Y' AND T_OrderHeaderMgm_McuID = ?
) x
GROUP BY T_OrderHeaderID
ORDER BY T_OrderHeaderLabNumber ASC
LIMIT ? OFFSET ?`
LIMIT ? OFFSET ?
`
if err := dbx.Handlex.Select(&listDaftarPeserta, query, id, rowperpage, offset); err != nil {
return nil, 0, fmt.Errorf("error querying database: %v", err)
}
totalPage := int(math.Ceil(float64(totalData) / float64(rowperpage)))
defer logger.Sync()
logger.Info("GET DATA PESERTA",
zap.Any("id", id),
zap.Any("total data", totalData),
zap.Any("peserta", listDaftarPeserta),
)
return listDaftarPeserta, totalPage, nil
}
func (tdps *TabDaftarPesertaServices) GetReportMcu(orderheaderID string) ([]models.TabViewReportMcu, error) {
var ret []models.TabViewReportMcu
var data []models.ModelMcuPesertaReport
var totalData int
func (tdps *TabDaftarPesertaServices) DetailTestdanPaket(orderheaderID string) ([]models.TableTestPaket, error) {
var listPaket []models.DetailPaketMCU
var listTest []models.DetailTestMCU
var ret []models.TableTestPaket
q := `
SELECT COUNT(*)
FROM so_resultentry
WHERE So_ResultEntryT_OrderHeaderID = ?
AND So_ResultEntryIsActive = 'Y'
`
if err := dbx.Handlex.Get(&totalData, q, orderheaderID); err != nil {
return ret, fmt.Errorf("error get total mcu report: %v", err)
}
q = `
// get list test name
qr := `
SELECT
So_ResultEntryID,
So_ResultEntryT_OrderHeaderID,
So_ResultEntryNonlab_TemplateID,
So_ResultEntryNonlab_TemplateName
FROM so_resultentry
WHERE So_ResultEntryT_OrderHeaderID = ?
AND So_ResultEntryIsActive = 'Y'
ORDER BY So_ResultEntryNonlab_TemplateID
T_OrderDetailOrderT_TestID,
T_OrderDetailOrderT_TestName
FROM t_orderdetailorder
WHERE T_OrderDetailOrderT_OrderHeaderID = ?
AND T_OrderDetailOrderIsActive = 'Y'
AND T_OrderDetailOrderIsPacket = 'N'
`
if err := dbx.Handlex.Select(&data, q, orderheaderID); err != nil {
if err := dbx.Handlex.Select(&listTest, qr, orderheaderID); err != nil {
return ret, err
}
// Lab
ret = append(ret, models.TabViewReportMcu{Name: "Hasil Laboratorium", Link: "https://devcpone.aplikasi.web.id/birt/run?__report=report/one/lab/rpt_test.rptdesign&__format=pdf&PID=" + orderheaderID + "&username=adhi&tm=1717726294764"})
// Non-lab
for _, n := range data {
var link models.TabViewReportMcu
switch n.So_ResultEntryNonlab_TemplateName {
case "ECG":
link.Name = "Elektromedis"
link.Link = "https://devcpone.aplikasi.web.id/birt/run?__report=report/one/lab/rpt_hasil_so_elmd.rptdesign&__format=pdf&PID=" + strconv.Itoa(n.So_ResultEntryID) + "&username=adhi&tm=1717726294764"
case "Thorax PA":
link.Name = "Radiologi"
link.Link = "https://devcpone.aplikasi.web.id/birt/run?__report=report/one/lab/rpt_hasil_so_xray.rptdesign&__format=pdf&PID=" + strconv.Itoa(n.So_ResultEntryID) + "&username=adhi&tm=1717726294764"
case "Audiometri":
link.Name = "Audiometri"
link.Link = "https://devcpone.aplikasi.web.id/birt/run?__report=report/one/lab/rpt_hasil_so_audiometri.rptdesign&__format=pdf&PID=" + strconv.Itoa(n.So_ResultEntryID) + "&username=adhi&tm=1717726294764"
case "Spirometri":
link.Name = "Spirometri"
link.Link = "https://devcpone.aplikasi.web.id/birt/run?__report=report/one/lab/rpt_hasil_so_spirometri.rptdesign&__format=pdf&PID=" + strconv.Itoa(n.So_ResultEntryID) + "&username=adhi&tm=1717726294764"
case "Fisik Umum":
namaFisik := []string{"Hasil Fisik", "Hasil Pajanan", "Riwayat"}
linkFisik := []string{
"https://devcpone.aplikasi.web.id/birt/run?__report=report/one/mcu/mcu_fisik.rptdesign&__format=pdf&PID=" + strconv.Itoa(n.So_ResultEntryID) + "&PType=fisik&username=adhi&tm=1717726294764",
"https://devcpone.aplikasi.web.id/birt/run?__report=report/one/mcu/mcu_pajanan.rptdesign&__format=pdf&PID=" + strconv.Itoa(n.So_ResultEntryID) + "&PType=fisik&username=adhi&tm=1717726294764",
"https://devcpone.aplikasi.web.id/birt/run?__report=report/one/mcu/mcu_riwayat.rptdesign&__format=pdf&PID=" + strconv.Itoa(n.So_ResultEntryID) + "&PType=riwayat&username=adhi&tm=1717726294764",
}
for i := 0; i < 3; i++ {
ret = append(ret, models.TabViewReportMcu{Name: namaFisik[i], Link: linkFisik[i]})
}
continue
}
ret = append(ret, link)
// get detail paket
q := `
SELECT
T_OrderDetailOrderT_PacketID,
T_OrderDetailOrderT_PacketName,
T_TestName
FROM t_orderdetailorder
JOIN t_packetdetail ON T_PacketDetailT_PacketID = T_OrderDetailOrderT_PacketID AND T_PacketDetailIsActive = 'Y'
JOIN t_test ON T_TestName = T_PacketDetailT_TestID AND T_TestIsActive = 'Y'
WHERE T_OrderDetailOrderT_OrderHeaderID = ? AND T_OrderDetailOrderIsActive = 'Y'
`
if err := dbx.Handlex.Select(&listPaket, q, orderheaderID); err != nil {
return ret, err
}
ret = append(ret, models.TabViewReportMcu{Name: "Resume Individu", Link: "https://devcpone.aplikasi.web.id/birt/run?__report=report/one/mcu/rpt_mcu_resume.rptdesign&__format=pdf&PID=" + orderheaderID + "&username=adhi&tm=1717726294764"})
nomor := 1
for _, d := range listTest {
ret = append(ret, models.TableTestPaket{
Nomor: nomor,
NamaTest: d.T_OrderDetailOrderT_TestName,
NamaPaket: d.T_OrderDetailOrderT_TestName,
})
nomor++
}
for _, d := range listPaket {
ret = append(ret, models.TableTestPaket{
Nomor: nomor,
NamaTest: d.T_TestName,
NamaPaket: d.T_OrderDetailOrderT_PacketName,
})
nomor++
}
return ret, nil
}
func (tdps *TabDaftarPesertaServices) GenerataPasswordMCU(mgmMCUID string, host string) (models.GeneratePasswordResponse, error) {
logger, _ := zap.NewProduction()
var ret models.GeneratePasswordResponse
uri := "https://" + config.Data.Get("servername") + "/one-api/tools/auth_patient/generate/" + mgmMCUID
payload := []byte{}
resp, err := http.Post(uri, "application/json", bytes.NewBuffer(payload))
if err != nil {
return ret, fmt.Errorf("error request generate password: %v", err)
}
defer resp.Body.Close()
body, err := io.ReadAll(resp.Body)
if err != nil {
return ret, fmt.Errorf("error read body respoonse")
}
if err := json.Unmarshal(body, &ret); err != nil {
return ret, fmt.Errorf("error unmarshal json respoonse")
}
defer logger.Sync()
logger.Info("response", zap.Any("data", ret))
return ret, nil
}
func (tdps *TabDaftarPesertaServices) GetAkunPeserta(patientID string) (models.AuthPatient, error) {
// logger, _ := zap.NewProduction()
var ret models.AuthPatient
q := `
SELECT
authPatientID,
authPatientM_PatientID,
authPatientEmail,
authPatientPassword,
authPatientIsActive
FROM auth_patient
WHERE authPatientM_PatientID = ?
AND authPatientIsActive = 'Y'
`
if err := dbx.Handlex.Get(&ret, q, patientID); err != nil {
return ret, fmt.Errorf("error get akun peserta")
}
// logger.Info("response", zap.Any("data", ret))
return ret, nil
}
func (tdps *TabDaftarPesertaServices) ResetPasswordPeserta(token string, newPassword string, email string, authuserid string) (models.ResponseStatus, error) {
var ret models.ResponseStatus
uri := "https://" + config.Data.Get("servername") + "/one-api/mockup/system/menu/reset_password_pat"
params := url.Values{}
params.Add("new", newPassword)
params.Add("email", email)
params.Add("authuserid", authuserid)
params.Add("token", token)
req, err := http.PostForm(uri, params)
if err != nil {
ret = models.ResponseStatus{
Status: "ERR",
Message: "error request change password",
}
return ret, err
}
defer req.Body.Close()
resp, err := io.ReadAll(req.Body)
if err != nil {
ret = models.ResponseStatus{
Status: "ERR",
Message: "error read response",
}
return ret, err
}
err = json.Unmarshal(resp, &ret)
if err != nil {
ret = models.ResponseStatus{
Status: "ERR",
Message: "error unmarshal response",
}
return ret, err
}
return ret, nil
}
func (tdps *TabDaftarPesertaServices) GetListReportPesertaV2(orderheaderID string, host string) ([]models.TabViewReportMcu, error) {
var returnTabRpt []models.TabViewReportMcu
var SoResultData []models.SoResultEntryReportModel
q := `
SELECT
So_ResultEntryID,
So_ResultEntryT_OrderHeaderID,
So_ResultEntryNonlab_TemplateID,
So_ResultEntryNonlab_TemplateName,
DATE_FORMAT(NOW(), '%y%m%d%H%i%s') AS Datetime
FROM so_resultentry
WHERE So_ResultEntryT_OrderHeaderID = ?
AND So_ResultEntryIsActive = 'Y'
ORDER BY So_ResultEntryNonlab_TemplateID
`
if err := dbx.Handlex.Select(&SoResultData, q, orderheaderID); err != nil {
return returnTabRpt, fmt.Errorf("error get so result data non lab: %v", err)
}
mapSoResult := map[string]int{}
for _, so := range SoResultData {
switch so.So_ResultEntryNonlab_TemplateName {
case "ECG":
mapSoResult["Elektromedik"] = so.So_ResultEntryID
case "Thorax PA":
mapSoResult["Radiologi"] = so.So_ResultEntryID
case "Fisik Umum", "Fisik Umum K3":
mapSoResult["Fisik"] = so.So_ResultEntryID
default:
mapSoResult[so.So_ResultEntryNonlab_TemplateName] = so.So_ResultEntryID
}
}
var GroupResultOrder []models.GroupResultOrderModel
q = `
SELECT
gr.Group_ResultID,
gr.Group_ResultName,
gr.Group_ResultResumeMcu,
gr.Group_ResultUrl,
gr.Group_ResultIsOrderHeader,
gro.Group_ResultOrderOrder,
DATE_FORMAT(NOW(), '%y%m%d%H%i%s') AS Datetime
FROM t_orderdetail todtl
JOIN t_test tt ON todtl.T_OrderDetailT_TestID = tt.T_TestID
AND tt.T_TestIsActive = 'Y'
JOIN group_resultdetail grd ON tt.T_TestID = grd.Group_ResultDetailT_TestID
AND grd.Group_ResultDetailIsActive = 'Y'
JOIN group_result gr ON grd.Group_ResultDetailGroup_ResultID = gr.Group_ResultID
AND gr.Group_ResultIsActive = 'Y'
JOIN group_resultorder gro ON gro.Group_ResultOrderGroup_ResultID = gr.Group_ResultID
AND Group_ResultOrderIsActive = 'Y'
WHERE todtl.T_OrderDetailT_OrderHeaderID = ?
AND todtl.T_OrderDetailIsActive = 'Y'
GROUP BY gr.Group_ResultID
ORDER BY gro.Group_ResultOrderOrder
`
if err := dbx.Handlex.Select(&GroupResultOrder, q, orderheaderID); err != nil {
return returnTabRpt, fmt.Errorf("error get group result order: %v", err)
}
for _, d := range GroupResultOrder {
var urlMap map[string]string
if err := json.Unmarshal([]byte(d.Group_ResultUrl), &urlMap); err != nil {
return returnTabRpt, fmt.Errorf("error parsing json: %v", err)
}
if d.Group_ResultIsOrderHeader == "N" {
if d.Group_ResultResumeMcu == "FISIK" {
soResultID := strconv.Itoa(mapSoResult["Fisik"])
for key, value := range urlMap {
returnTabRpt = append(returnTabRpt, models.TabViewReportMcu{
Name: key,
Link: value + soResultID + "&tm=" + d.Datetime,
})
}
}
if d.Group_ResultResumeMcu == "NONLAB" {
soResultID := strconv.Itoa(mapSoResult[d.Group_ResultName])
for key, value := range urlMap {
returnTabRpt = append(returnTabRpt, models.TabViewReportMcu{
Name: key,
Link: value + soResultID + "&tm=" + d.Datetime,
})
}
}
} else {
for _, value := range urlMap {
returnTabRpt = append(returnTabRpt, models.TabViewReportMcu{
Name: d.Group_ResultName,
Link: value + orderheaderID + "&tm=" + d.Datetime,
})
}
}
}
return returnTabRpt, nil
}
func (tdps *TabDaftarPesertaServices) GetListReportPesertaV3(orderheaderID string, staffname string) ([]models.TabViewReportMcu, error) {
var returnTab []models.TabViewReportMcu
var GroupResultOrder []models.GroupResultOrderModel
var SoResultData []models.SoResultEntryReportModel
q := `
SELECT
gr.Group_ResultID,
gr.Group_ResultName,
gr.Group_ResultResumeMcu,
gr.Group_ResultUrl,
gr.Group_ResultIsOrderHeader,
gro.Group_ResultOrderOrder,
DATE_FORMAT(NOW(), '%y%m%d%H%i%s') AS Datetime
FROM t_orderdetail todtl
JOIN t_test tt ON todtl.T_OrderDetailT_TestID = tt.T_TestID
AND tt.T_TestIsActive = 'Y'
JOIN group_resultdetail grd ON tt.T_TestID = grd.Group_ResultDetailT_TestID
AND grd.Group_ResultDetailIsActive = 'Y'
JOIN group_result gr ON grd.Group_ResultDetailGroup_ResultID = gr.Group_ResultID
AND gr.Group_ResultIsActive = 'Y'
JOIN group_resultorder gro ON gro.Group_ResultOrderGroup_ResultID = gr.Group_ResultID
AND Group_ResultOrderIsActive = 'Y'
WHERE todtl.T_OrderDetailT_OrderHeaderID = ?
AND todtl.T_OrderDetailIsActive = 'Y'
GROUP BY gr.Group_ResultID
ORDER BY gro.Group_ResultOrderOrder
`
if err := dbx.Handlex.Select(&GroupResultOrder, q, orderheaderID); err != nil {
return returnTab, fmt.Errorf("error get group result order: %v", err)
}
q = `
SELECT
sre.So_ResultEntryID,
sre.So_ResultEntryT_OrderHeaderID,
sre.So_ResultEntryT_OrderDetailID,
sre.So_ResultEntryNonlab_TemplateID,
sre.So_ResultEntryNonlab_TemplateName
FROM t_orderdetail tdet
JOIN t_test tt ON tdet.T_OrderDetailT_TestID = tt.T_TestID
AND tt.T_TestIsActive = 'Y'
JOIN so_resultentry sre ON sre.So_ResultEntryT_OrderDetailID = tdet.T_OrderDetailID
AND sre.So_ResultEntryIsActive = 'Y'
WHERE tdet.T_OrderDetailT_OrderHeaderID = ?
AND tdet.T_OrderDetailIsActive = 'Y'
`
if err := dbx.Handlex.Select(&SoResultData, q, orderheaderID); err != nil {
return returnTab, fmt.Errorf("error get so result data non lab: %v", err)
}
mapSoResultData := map[string]int{}
for _, so := range SoResultData {
switch so.So_ResultEntryNonlab_TemplateName {
case "ECG":
mapSoResultData["Elektromedik"] = so.So_ResultEntryID
case "Thorax PA":
mapSoResultData["Rontgen"] = so.So_ResultEntryID
case "Fisik Umum", "Fisik Umum K3":
mapSoResultData["FISIK"] = so.So_ResultEntryID
default:
mapSoResultData[so.So_ResultEntryNonlab_TemplateName] = so.So_ResultEntryID
}
}
for _, group := range GroupResultOrder {
var urlMap map[string]string
if err := json.Unmarshal([]byte(group.Group_ResultUrl), &urlMap); err != nil {
return returnTab, fmt.Errorf("error parsing json: %v", err)
}
switch group.Group_ResultResumeMcu {
case "FISIK":
soResultID := strconv.Itoa(mapSoResultData["FISIK"])
if soResultID != "0" {
for key, value := range urlMap {
returnTab = append(returnTab, models.TabViewReportMcu{
Name: key,
Link: value + "&username=" + staffname + "&PID=" + soResultID + "&tm=" + group.Datetime,
})
}
}
case "NONLAB":
soResultID := strconv.Itoa(mapSoResultData[group.Group_ResultName])
if soResultID != "0" {
for _, value := range urlMap {
returnTab = append(returnTab, models.TabViewReportMcu{
Name: group.Group_ResultName,
Link: value + "&username=" + staffname + "&PID=" + soResultID + "&tm=" + group.Datetime,
})
}
}
case "LAB":
for _, value := range urlMap {
returnTab = append(returnTab, models.TabViewReportMcu{
Name: group.Group_ResultName,
Link: value + "&username=" + staffname + "&PID=" + orderheaderID + "&tm=" + group.Datetime,
})
}
default:
for _, value := range urlMap {
returnTab = append(returnTab, models.TabViewReportMcu{
Name: group.Group_ResultName,
Link: value + "&username=" + staffname + "&PID=" + orderheaderID + "&tm=" + group.Datetime,
})
}
}
}
return returnTab, nil
}
func (tdps *TabDaftarPesertaServices) GetListReportPesertaV4(orderheaderID string, staffname string) ([]models.TabViewReportMcu, error) {
var returnTab []models.TabViewReportMcu
var profile_patient models.PatientMCU
lab_rpt := ""
sql := `
SELECT
toh.T_OrderHeaderID,
toh.T_OrderHeaderLabNumber,
mp.M_PatientID,
mp.M_PatientName,
DATE_FORMAT(NOW(), '%y%m%d%H%i%s') AS Datetime
FROM t_orderheader toh
JOIN m_patient mp ON toh.T_OrderHeaderM_PatientID = mp.M_PatientID
AND mp.M_PatientIsActive = 'Y'
WHERE toh.T_OrderHeaderID = ? AND toh.T_OrderHeaderIsActive = 'Y'
`
if err := dbx.Handlex.Get(&profile_patient, sql, orderheaderID); err != nil {
return returnTab, fmt.Errorf("error get group result order: %v", err)
}
if profile_patient.T_OrderHeaderLabNumber != "" {
lab_rpt = "/birt/frameset?__report=report/one/lab/rpt_test_portal.rptdesign&__format=pdf&PID=" + profile_patient.T_OrderHeaderID + "&tm=" + profile_patient.Datetime + "&username=" + staffname
}
var so_data_rpt []models.SoRptData
fisik := ""
rontgen := ""
ekg := ""
audiometri := ""
spirometri := ""
treadmill := ""
papsmear := ""
sql_rpt := `
SELECT DISTINCT group_resultName as rpt_name,
IFNULL(So_ResultEntryID,0) as so_id,
T_OrderDetailT_OrderHeaderID as order_id,
DATE_FORMAT(NOW(), '%y%m%d%H%i%s') AS Datetime
FROM t_orderdetail
JOIN t_test ON T_OrderDetailT_TestID = T_TestID
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_TestID
JOIN group_result ON Group_ResultID = Group_ResultDetailGroup_ResultID AND
Group_ResultFlagPerTest = 'N' AND Group_ResultName <> 'LAB' AND Group_ResultFlagNonLab = 'N'
LEFT JOIN so_resultentry ON So_ResultEntryT_OrderDetailID = T_OrderDetailID AND So_ResultEntryIsActive = 'Y'
WHERE
T_OrderDetailT_OrderHeaderID = ? AND Group_ResultName <> 'Tanpa Hasil'
UNION
SELECT DISTINCT group_resultName as rpt_name,
IFNULL(So_ResultEntryID,0) as so_id,
T_OrderDetailT_OrderHeaderID as order_id,
DATE_FORMAT(NOW(), '%y%m%d%H%i%s') AS Datetime
FROM t_orderdetail
JOIN t_test ON T_OrderDetailT_TestID = T_TestID
JOIN t_samplingso ON T_SamplingSoT_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND
T_SamplingSoT_TestID = T_TestID
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_TestID
JOIN group_result ON Group_ResultID = Group_ResultDetailGroup_ResultID AND
Group_ResultFlagPerTest = 'N' AND Group_ResultName <> 'LAB' AND Group_ResultFlagNonLab = 'Y'
LEFT JOIN so_resultentry ON So_ResultEntryT_OrderDetailID = T_OrderDetailID AND So_ResultEntryIsActive = 'Y'
WHERE
T_OrderDetailT_OrderHeaderID = ? AND Group_ResultName <> 'Tanpa Hasil'
UNION
SELECT DISTINCT T_TestName as rpt_name,
IFNULL(So_ResultEntryID,0) as so_id,
T_OrderDetailT_OrderHeaderID as order_id,
DATE_FORMAT(NOW(), '%y%m%d%H%i%s') AS Datetime
FROM t_orderdetail
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestName NOT IN ('Visus Mata','Buta Warna','Pemeriksaan Lapang Pandang')
JOIN t_samplingso ON T_SamplingSoT_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND
T_SamplingSoT_TestID = T_TestID
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_TestID
JOIN group_result ON Group_ResultID = Group_ResultDetailGroup_ResultID AND
Group_ResultFlagPerTest = 'Y' AND Group_ResultFlagNonLab = 'Y'
LEFT JOIN so_resultentry ON So_ResultEntryT_OrderDetailID = T_OrderDetailID AND So_ResultEntryIsActive = 'Y'
WHERE
T_OrderDetailT_OrderHeaderID = ? AND Group_ResultName <> 'Tanpa Hasil'
`
if err := dbx.Handlex.Select(&so_data_rpt, sql_rpt, orderheaderID, orderheaderID, orderheaderID); err != nil {
return returnTab, fmt.Errorf("error get data so_id: %v", err)
}
for _, d := range so_data_rpt {
switch d.Rpt_name {
case "Pemeriksaan Fisik":
fisik = "/birt/frameset?__report=report/one/mcu/mcu_fisik_history_v2_portal.rptdesign&__format=pdf&PType=fisik&PLang=1&username=" + staffname + "&PID=" + d.So_id + "&tm=" + d.Datetime
case "Rontgen":
rontgen = "/birt/frameset?__report=report/one/lab/rpt_hasil_so_xray_portal.rptdesign&__format=pdf&username=" + staffname + "&PID=" + d.So_id + "&tm=" + d.Datetime
case "Audiometri":
audiometri = "/birt/frameset?__report=report/one/lab/rpt_hasil_so_audiometri_portal.rptdesign&__format=pdf&username=" + staffname + "&PID=" + d.So_id + "&tm=" + d.Datetime
case "Spirometri":
spirometri = "/birt/frameset?__report=report/one/lab/rpt_hasil_so_spirometri_portal.rptdesign&__format=pdf&username=" + staffname + "&PID=" + d.So_id + "&tm=" + d.Datetime
case "ECG":
ekg = "/birt/frameset?__report=report/one/lab/rpt_hasil_so_ecg_portal.rptdesign&__format=pdf&username=" + staffname + "&PID=" + d.So_id + "&tm=" + d.Datetime
case "Treadmill":
treadmill = "/birt/frameset?__report=report/one/lab/rpt_hasil_so_treadmill_portal.rptdesign&__format=pdf&username=" + staffname + "&PID=" + d.So_id + "&tm=" + d.Datetime
case "Papsmear":
papsmear = "/birt/frameset?__report=report/one/lab/rpt_test_papsmear_portal.rptdesign&__format=pdf&username=" + staffname + "&PID=" + d.So_id + "&tm=" + d.Datetime
}
}
var ResumeData models.ResumeMCU
kesimpulan := ""
// cover := ""
sql_resume := `
SELECT
Mcu_ResumeID,
DATE_FORMAT(NOW(), '%y%m%d%H%i%s') AS Datetime
FROM mcu_resume
WHERE Mcu_ResumeT_OrderHeaderID = ?
AND Mcu_ResumeIsActive = 'Y' AND Mcu_ResumeStatus = 'VAL'
`
if err := dbx.Handlex.Get(&ResumeData, sql_resume, orderheaderID); err != nil {
return returnTab, fmt.Errorf("error get data resume id: %v", err)
}
if ResumeData.Mcu_ResumeID != "" {
// cover = "/birt/frameset?__report=report/one/mcu/rpt_mcu_resume_cover_portal.rptdesign&__format=pdf&username=" + staffname + "&PID=" + ResumeData.Mcu_ResumeID + "&tm=" + ResumeData.Datetime
kesimpulan = "/birt/frameset?__report=report/one/mcu/rpt_mcu_saran_kesimpulan_v2_portal.rptdesign&__format=pdf&username=" + staffname + "&PID=" + ResumeData.Mcu_ResumeID + "&tm=" + ResumeData.Datetime
}
if fisik != "" {
returnTab = append(returnTab, models.TabViewReportMcu{Name: "Fisik", Link: fisik})
}
if rontgen != "" {
returnTab = append(returnTab, models.TabViewReportMcu{Name: "Rontgen", Link: rontgen})
}
if ekg != "" {
returnTab = append(returnTab, models.TabViewReportMcu{Name: "Elektromedik", Link: ekg})
}
if audiometri != "" {
returnTab = append(returnTab, models.TabViewReportMcu{Name: "Audiometri", Link: audiometri})
}
if spirometri != "" {
returnTab = append(returnTab, models.TabViewReportMcu{Name: "Spirometri", Link: spirometri})
}
if treadmill != "" {
returnTab = append(returnTab, models.TabViewReportMcu{Name: "Treadmill", Link: treadmill})
}
if kesimpulan != "" {
returnTab = append(returnTab, models.TabViewReportMcu{Name: "Kesimpulan", Link: kesimpulan})
}
if lab_rpt != "" {
returnTab = append(returnTab, models.TabViewReportMcu{Name: "Lab", Link: lab_rpt})
}
if papsmear != "" {
returnTab = append(returnTab, models.TabViewReportMcu{Name: "Papsmear", Link: papsmear})
}
return returnTab, nil
}

View File

@@ -4,7 +4,9 @@ import (
"cpone/db"
"cpone/models"
dbx "cpone/package/database"
"cpone/utils"
"fmt"
"math"
"strconv"
"go.uber.org/zap"
@@ -93,35 +95,196 @@ func (tkf *TabKelainanFisikServices) GetPieChartConf(title string, subtext strin
return option, nil
}
func (tkf *TabKelainanFisikServices) GetBarChartConf(title string, data models.BarDataset) (models.Barchart, error) {
isEmpty := ""
if len(data.Source) <= 1 {
isEmpty = "Data tidak ditemukan"
}
option := models.Barchart{}
option.Title = struct {
Text string "json:\"text\""
Left string `json:"left"`
}{
Text: title,
Left: "center",
}
option.Dataset = data
option.Grid.ContainLabel = true
option.XAxis.Name = "person"
option.YAxis.Type = "category"
option.VisualMap.Orient = "horizontal"
option.VisualMap.Left = "center"
option.VisualMap.Min = 0
option.VisualMap.Max = 10
option.VisualMap.Show = false
option.VisualMap.Dimension = 0
option.VisualMap.InRange.Color = []string{"#035bff", "#42aaf5", "#00eaf2"}
option.Series = []struct {
Label struct {
Position string "json:\"position\""
Show bool "json:\"show\""
Formatter string "json:\"formatter\""
} "json:\"label\""
Type string "json:\"type\""
Encode struct {
X string "json:\"x\""
Y string "json:\"y\""
} "json:\"encode\""
}{
{
Label: struct {
Position string "json:\"position\""
Show bool "json:\"show\""
Formatter string "json:\"formatter\""
}{
Position: "right",
Show: true,
Formatter: "{@[3]} %",
},
Type: "bar",
Encode: struct {
X string "json:\"x\""
Y string "json:\"y\""
}{
X: "amount",
Y: "product",
},
},
}
option.Tooltip = struct {
Trigger string "json:\"trigger\""
AxisPointer struct {
Type string "json:\"type\""
} "json:\"axisPointer\""
}{
Trigger: "axis",
AxisPointer: struct {
Type string "json:\"type\""
}{
Type: "shadow",
},
}
option.Graphic = struct {
Type string "json:\"type\""
Left string "json:\"left\""
Top string "json:\"top\""
Style struct {
Text string "json:\"text\""
FontSize string "json:\"fontSize\""
FontWeight string "json:\"fontWeight\""
} "json:\"style\""
}{
Type: "text",
Left: "center",
Top: "middle",
Style: struct {
Text string "json:\"text\""
FontSize string "json:\"fontSize\""
FontWeight string "json:\"fontWeight\""
}{
Text: isEmpty,
FontSize: "15",
FontWeight: "bold",
},
}
return option, nil
}
func (tkf *TabKelainanFisikServices) GetKelainanFisikPresentase(mcuID string) (models.Barchart, error) {
var option models.Barchart
var data []models.KelainanGlobalFisikModel
q := `
SELECT Mcu_KelainanName,
count(distinct T_OrderHeaderID) as total
FROM t_kelainan_fisik
JOIN t_orderheader ON T_KelainanFiskT_OrderHeaderID = T_OrderHeaderID
JOIN mcu_summaryfisik ON T_KelainanFiskMcu_SummaryFisikID = Mcu_SummaryFisikID AND
Mcu_SummaryFisikID NOT IN (63,67,68,69,70,71,72,73)
join mcu_kelainan on Mcu_SummaryFisikMcu_KelainanID = Mcu_KelainanID
join mcu_kelainangroup on Mcu_KelainanMcu_KelainanGroupID = Mcu_KelainanGroupID
where T_KelainanFiskIsActive = 'Y' and T_OrderHeaderMgm_McuID = ? AND
Mcu_KelainanClasification NOT IN ('who','kemenkes','JNC-VIII','ESC/ESH')
group by Mcu_KelainanID
ORDER BY total DESC
LIMIT 10
`
if err := dbx.Handlex.Select(&data, q, mcuID); err != nil {
return option, fmt.Errorf("error get data kelainan fisik: %v", err)
}
var jumlahPeserta models.TotalPesertaModel
q = `
SELECT
COUNT(distinct(T_OrderHeaderID)) as peserta,
COUNT( distinct(Mcu_PreregisterPatientsM_PatientID)) as total
FROM mcu_preregister_patients
LEFT JOIN t_orderheader ON Mcu_PreregisterPatientsT_OrderHeaderID = T_OrderHeaderID AND
T_OrderHeaderIsActive = 'Y'
WHERE
Mcu_PreregisterPatientsMgm_McuID = ? AND
Mcu_PreregisterPatientsIsActive = 'Y'
`
if err := dbx.Handlex.Get(&jumlahPeserta, q, mcuID); err != nil {
return option, fmt.Errorf("error get jumlah peserta %v", err)
}
title := "Kelainan Fisik (10 Terbesar)"
chartData := models.BarDataset{
Source: [][]interface{}{
{"score", "amount", "product", "percentage"},
},
}
for i, d := range data {
percentage := float64(d.Total) / float64(jumlahPeserta.Peserta) * 100
roundedPercentage := math.Round(percentage*100) / 100
percentStr := strconv.FormatFloat(roundedPercentage, 'f', -1, 64)
newText := utils.SplitStrings(d.Mcu_KelainanName, 2)
chartData.Source = append(chartData.Source, []interface{}{
i, d.Total, newText, percentStr,
})
}
option, err := tkf.GetBarChartConf(title, chartData)
if err != nil {
return option, fmt.Errorf("error insert data to barchart %v", err)
}
return option, nil
}
func (tkf *TabKelainanFisikServices) GetKelainanFisikBMI(mcuID string) (models.Piechart, error) {
logger, _ := zap.NewProduction()
var option models.Piechart
var data []models.KelainanFisikDataModel
q := `
SELECT
CASE
WHEN Mgm_HeaderIsNormal = "Y" THEN "Normal"
WHEN Mgm_HeaderIsNormal = "N" THEN Mcu_KelainanName
ELSE "Tidak diperiksa" END AS test,
COUNT(Mgm_HeaderT_OrderHeaderID) AS total,
IFNULL(Mcu_KelainanClasification, "") AS Mcu_KelainanClasification
FROM mgm_header
LEFT JOIN mgm_detail ON Mgm_DetailMgm_HeaderID = Mgm_HeaderID AND Mgm_DetailIsActive = 'Y'
LEFT JOIN mcu_kelainan ON Mgm_DetailMcu_KelainanID = Mcu_KelainanID
LEFT JOIN mcu_kelainangroup ON Mgm_DetailMcu_KelainanGroupID = Mcu_KelainanGroupID
LEFT JOIN nat_test ON Nat_TestCode = Mgm_HeaderNat_TestCode
WHERE Mgm_HeaderIsActive = 'Y' AND Mgm_HeaderMgm_McuID = ?
AND Mgm_HeaderNat_TestCode = 'STATUS GIZI'
GROUP BY
CASE
WHEN Mgm_HeaderIsNormal = "Y" THEN "Normal"
WHEN Mgm_HeaderIsNormal = "N" THEN Mcu_KelainanName ELSE
"Tidak diperiksa" END
ORDER BY COUNT(Mgm_HeaderT_OrderHeaderID) DESC
SELECT Mcu_KelainanName as test,
Mcu_KelainanClasification,
count(distinct orderkel.T_OrderHeaderID) as total
FROM mcu_kelainan
JOIN mcu_summaryfisik ON Mcu_SummaryFisikMcu_KelainanID = Mcu_KelainanID AND
Mcu_SummaryFisikIsActive = 'Y'
LEFT JOIN t_kelainan_fisik ON T_KelainanFiskMcu_SummaryFisikID = Mcu_SummaryFisikID AND
T_KelainanFiskIsActive= 'Y'
LEFT JOIN t_orderheader orderkel ON T_KelainanFiskT_OrderHeaderID = orderkel.T_OrderHeaderID AND
orderkel.T_OrderHeaderIsActive = 'Y' AND orderkel.T_OrderHeaderMgm_McuID = ?
WHERE
Mcu_KelainanIsActive = 'Y' AND Mcu_KelainanClasification = 'asia_pacific'
group by Mcu_KelainanID
UNION
SELECT 'Normal' as test,
'asia_pacific' as Mcu_KelainanClasification,
ifnull(count(distinct T_OrderHeaderID) - summary_total_kelainan_bmi(?), 0) as total
FROM t_orderheader
WHERE
T_OrderHeaderMgm_McuID = ? AND T_OrderHeaderIsActive = 'Y'
group by T_OrderHeaderMgm_McuID
`
if err := dbx.Handlex.Select(&data, q, mcuID); err != nil {
if err := dbx.Handlex.Select(&data, q, mcuID, mcuID, mcuID); err != nil {
return option, fmt.Errorf("error get data kel fisik bmi %v", err)
}
defer logger.Sync()
@@ -156,28 +319,30 @@ func (tkf *TabKelainanFisikServices) GetKelainanFisikHipertensi(mcuID string) (m
var data []models.KelainanFisikDataModel
q := `
SELECT
CASE
WHEN Mgm_HeaderIsNormal = "Y" THEN "Normal"
WHEN Mgm_HeaderIsNormal = "N" THEN Mcu_KelainanName
ELSE "Tidak diperiksa" END AS test,
COUNT(Mgm_HeaderT_OrderHeaderID) AS total,
IFNULL(Mcu_KelainanClasification, "") AS Mcu_KelainanClasification
FROM mgm_header
LEFT JOIN mgm_detail ON Mgm_DetailMgm_HeaderID = Mgm_HeaderID AND Mgm_DetailIsActive = 'Y'
LEFT JOIN mcu_kelainan ON Mgm_DetailMcu_KelainanID = Mcu_KelainanID
LEFT JOIN mcu_kelainangroup ON Mgm_DetailMcu_KelainanGroupID = Mcu_KelainanGroupID
LEFT JOIN nat_test ON Nat_TestCode = Mgm_HeaderNat_TestCode
WHERE Mgm_HeaderIsActive = 'Y' AND Mgm_HeaderMgm_McuID = ?
AND Mgm_HeaderNat_TestCode = 'TANDA VITAL'
GROUP BY
CASE
WHEN Mgm_HeaderIsNormal = "Y" THEN "Normal"
WHEN Mgm_HeaderIsNormal = "N" THEN Mcu_KelainanName
ELSE "Tidak diperiksa" END
ORDER BY count(Mgm_HeaderT_OrderHeaderID) DESC
SELECT Mcu_KelainanName as test,
Mcu_KelainanClasification,
count(distinct orderkel.T_OrderHeaderID) as total
FROM mcu_kelainan
JOIN mcu_summaryfisik ON Mcu_SummaryFisikMcu_KelainanID = Mcu_KelainanID AND
Mcu_SummaryFisikIsActive = 'Y'
LEFT JOIN t_kelainan_fisik ON T_KelainanFiskMcu_SummaryFisikID = Mcu_SummaryFisikID AND
T_KelainanFiskIsActive= 'Y'
LEFT JOIN t_orderheader orderkel ON T_KelainanFiskT_OrderHeaderID = orderkel.T_OrderHeaderID AND
orderkel.T_OrderHeaderIsActive = 'Y' AND orderkel.T_OrderHeaderMgm_McuID = ?
WHERE
Mcu_KelainanIsActive = 'Y' AND Mcu_KelainanClasification = 'JNC-VII'
group by Mcu_KelainanID
UNION
SELECT 'Normal' as test,
'JNC-VII' as Mcu_KelainanClasification,
IFNULL(COUNT(T_OrderHeaderID) - summary_total_kelainan_hipertensi(?), 0) as total
FROM t_orderheader
WHERE
T_OrderHeaderMgm_McuID = ? AND T_OrderHeaderIsActive = 'Y'
group by T_OrderHeaderMgm_McuID
`
if err := dbx.Handlex.Select(&data, q, mcuID); err != nil {
if err := dbx.Handlex.Select(&data, q, mcuID, mcuID, mcuID); err != nil {
return option, fmt.Errorf("error get data kel fisik hipertensi: %v", err)
}
defer logger.Sync()
@@ -205,3 +370,220 @@ func (tkf *TabKelainanFisikServices) GetKelainanFisikHipertensi(mcuID string) (m
return option, nil
}
func (tkf *TabKelainanFisikServices) GetKelainanFisikRefraksi(mcuID string) (models.Piechart, error) {
var option models.Piechart
var data []models.KelainanFisikDataModel
q := `
SELECT Mcu_KelainanName as test,
count(distinct orderkel.T_OrderHeaderID) as total
FROM mcu_kelainan
JOIN mcu_summaryfisik ON Mcu_SummaryFisikMcu_KelainanID = Mcu_KelainanID AND
Mcu_SummaryFisikIsActive = 'Y'
LEFT JOIN t_kelainan_fisik ON T_KelainanFiskMcu_SummaryFisikID = Mcu_SummaryFisikID AND
T_KelainanFiskIsActive= 'Y'
LEFT JOIN t_orderheader orderkel ON T_KelainanFiskT_OrderHeaderID = orderkel.T_OrderHeaderID AND
orderkel.T_OrderHeaderIsActive = 'Y' AND orderkel.T_OrderHeaderMgm_McuID = ?
WHERE
Mcu_KelainanIsActive = 'Y' AND Mcu_KelainanID IN (24,25)
group by Mcu_KelainanID
UNION
SELECT 'Normal' as test,
IFNULL(count(distinct T_OrderHeaderID) - summary_total_kelainan_visus(?), 0) as total
FROM t_orderheader
WHERE
T_OrderHeaderMgm_McuID = ? AND T_OrderHeaderIsActive = 'Y'
group by T_OrderHeaderMgm_McuID
`
if err := dbx.Handlex.Select(&data, q, mcuID, mcuID, mcuID); err != nil {
return option, fmt.Errorf("error get data kel fisik refraksi: %v", err)
}
title := "Refraksi"
subtext := ""
chartData := []models.SeriesData{}
if data != nil {
for _, d := range data {
chartData = append(chartData, models.SeriesData{
Value: d.Total,
Name: d.Test + ": " + strconv.Itoa(d.Total) + " Peserta",
})
}
} else {
chartData = append(chartData, models.SeriesData{Value: 0, Name: "No Data"})
}
option, err := tkf.GetPieChartConf(title, subtext, chartData)
if err != nil {
return option, fmt.Errorf("error get and insert data to chart: %v", err)
}
return option, nil
}
func (tkf *TabKelainanFisikServices) GetKelFisikAlkohol(mcuID string) (models.Piechart, error) {
var option models.Piechart
var data []models.KelainanFisikDataModel
q := `
SELECT
Mcu_KelainanName as test,
COUNT( distinct T_OrderHeaderID) as total
FROM mcu_kelainan
JOIN mcu_summaryfisik ON Mcu_SummaryFisikMcu_KelainanID = Mcu_KelainanID AND
Mcu_KelainanIsActive = 'Y' AND Mcu_KelainanID IN (117,118,119)
LEFT JOIN t_kelainan_fisik ON T_KelainanFiskMcu_SummaryFisikID = Mcu_SummaryFisikID AND
T_KelainanFiskIsActive = 'Y'
LEFT JOIN so_resultentry ON T_KelainanFiskSo_ResultEntryID = So_ResultEntryID AND
So_ResultEntryIsActive = 'Y'
LEFT JOIN so_resultentry_fisik_umum ON So_ResultEntryFisikUmumSo_ResultEntryID = So_ResultEntryID AND
So_ResultEntryFisikUmumIsActive = 'Y'
LEFT JOIN t_orderheader ON So_ResultEntryT_OrderHeaderID = T_OrderHeaderID AND
T_OrderHeaderMgm_McuID = ?
group by Mcu_KelainanID
`
if err := dbx.Handlex.Select(&data, q, mcuID); err != nil {
return option, fmt.Errorf("error get data kel fisik konsumsi alkohol: %v", err)
}
title := "Konsumsi Alkohol"
subtext := ""
chartData := []models.SeriesData{}
if data != nil {
for _, d := range data {
chartData = append(chartData, models.SeriesData{
Value: d.Total,
Name: d.Test + ": " + strconv.Itoa(d.Total) + " Peserta",
})
}
} else {
chartData = append(chartData, models.SeriesData{Value: 0, Name: "No Data"})
}
option, err := tkf.GetPieChartConf(title, subtext, chartData)
if err != nil {
return option, fmt.Errorf("error get and insert data to chart: %v", err)
}
return option, nil
}
func (tkf *TabKelainanFisikServices) GetKelFisikMerokok(mcuID string) (models.Piechart, error) {
var option models.Piechart
var data []models.KelainanFisikDataModel
q := `
SELECT Mcu_KelainanName as test, COUNT( distinct T_OrderHeaderID) as total
FROM mcu_kelainan
JOIN mcu_summaryfisik ON Mcu_SummaryFisikMcu_KelainanID = Mcu_KelainanID AND
Mcu_KelainanIsActive = 'Y' AND Mcu_KelainanID IN (120,121,122)
LEFT JOIN t_kelainan_fisik ON T_KelainanFiskMcu_SummaryFisikID = Mcu_SummaryFisikID AND
T_KelainanFiskIsActive = 'Y'
LEFT JOIN so_resultentry ON T_KelainanFiskSo_ResultEntryID = So_ResultEntryID AND
So_ResultEntryIsActive = 'Y'
LEFT JOIN so_resultentry_fisik_umum ON So_ResultEntryFisikUmumSo_ResultEntryID = So_ResultEntryID AND
So_ResultEntryFisikUmumIsActive = 'Y'
LEFT JOIN t_orderheader ON So_ResultEntryT_OrderHeaderID = T_OrderHeaderID AND
T_OrderHeaderMgm_McuID = ?
group by Mcu_KelainanID
`
if err := dbx.Handlex.Select(&data, q, mcuID); err != nil {
return option, fmt.Errorf("error get data kel fisik merokok %v", err)
}
title := "Merokok"
subtext := ""
chartData := []models.SeriesData{}
if data != nil {
for _, d := range data {
chartData = append(chartData, models.SeriesData{
Value: d.Total,
Name: d.Test + ": " + strconv.Itoa(d.Total) + " Peserta",
})
}
} else {
chartData = append(chartData, models.SeriesData{Value: 0, Name: "No Data"})
}
option, err := tkf.GetPieChartConf(title, subtext, chartData)
if err != nil {
return option, fmt.Errorf("error get and insert data into chart %v", err)
}
return option, nil
}
func (tkf *TabKelainanFisikServices) GetKelFisikOlahraga(mcuID string) (models.Piechart, error) {
var option models.Piechart
var data []models.KelainanFisikDataModel
q := `
SELECT Mcu_KelainanName as test, COUNT( distinct T_OrderHeaderID) as total
FROM mcu_kelainan
JOIN mcu_summaryfisik ON Mcu_SummaryFisikMcu_KelainanID = Mcu_KelainanID AND
Mcu_KelainanIsActive = 'Y' AND Mcu_KelainanID IN (123,124)
LEFT JOIN t_kelainan_fisik ON T_KelainanFiskMcu_SummaryFisikID = Mcu_SummaryFisikID AND
T_KelainanFiskIsActive = 'Y'
LEFT JOIN so_resultentry ON T_KelainanFiskSo_ResultEntryID = So_ResultEntryID AND
So_ResultEntryIsActive = 'Y'
LEFT JOIN so_resultentry_fisik_umum ON So_ResultEntryFisikUmumSo_ResultEntryID = So_ResultEntryID AND
So_ResultEntryFisikUmumIsActive = 'Y'
LEFT JOIN t_orderheader ON So_ResultEntryT_OrderHeaderID = T_OrderHeaderID AND
T_OrderHeaderMgm_McuID = ?
group by Mcu_KelainanID
`
if err := dbx.Handlex.Select(&data, q, mcuID); err != nil {
return option, fmt.Errorf("error get data kel fisik olahraga %v", err)
}
title := "Olahraga"
subtext := ""
chartData := []models.SeriesData{}
if data != nil {
for _, d := range data {
chartData = append(chartData, models.SeriesData{
Value: d.Total,
Name: d.Test + ": " + strconv.Itoa(d.Total) + " Peserta",
})
}
} else {
chartData = append(chartData, models.SeriesData{Value: 0, Name: "No Data"})
}
option, err := tkf.GetPieChartConf(title, subtext, chartData)
if err != nil {
return option, fmt.Errorf("error get and insert data to chart %v", err)
}
return option, nil
}
func (tkf *TabKelainanFisikServices) GetChartRenderFisik(mcuID string) ([]models.McuTabModels, error) {
var ret []models.McuTabModels
q := `
SELECT
Mcu_ImageGrafikGroupResult,
Mcu_ImageGrafikGroupMenu,
Mcu_ImageGrafikName,
Mcu_ImageGrafikJsonRender
FROM mgm_mcugrafik
JOIN mcu_image_grafik ON Mcu_ImageGrafikID = Mgm_McuGrafikMcu_ImageGrafikID
WHERE Mgm_McuGrafikMgm_McuID = ?
AND Mcu_ImageGrafikGroupResult = "FISIK"
AND Mgm_McuGrafikIsActive = 'Y'
ORDER BY Mcu_ImageGrafikID
`
if err := dbx.Handlex.Select(&ret, q, mcuID); err != nil {
return ret, fmt.Errorf("error get data tab peserta: %v", err)
}
return ret, nil
}

View File

@@ -4,6 +4,7 @@ import (
"cpone/db"
"cpone/models"
dbx "cpone/package/database"
"cpone/utils"
"fmt"
"math"
"strconv"
@@ -22,21 +23,30 @@ func NewTabKelainanGlobalServices(store db.AppStore) *TabKelainanGlobalServices
}
func (tkg *TabKelainanGlobalServices) GetBarChartConf(title string, data models.BarDataset) (models.Barchart, error) {
isEmpty := ""
if len(data.Source) <= 1 {
isEmpty = "Data tidak ditemukan"
}
option := models.Barchart{}
option.Title = struct {
Text string "json:\"text\""
}{title}
Left string `json:"left"`
}{
Text: title,
Left: "center",
}
option.Dataset = data
option.Grid.ContainLabel = true
option.XAxis.Name = "amount"
option.XAxis.Name = "person"
option.YAxis.Type = "category"
option.VisualMap.Orient = "horizontal"
option.VisualMap.Left = "center"
option.VisualMap.Min = 10
option.VisualMap.Max = 100
option.VisualMap.Min = 0
option.VisualMap.Max = 10
option.VisualMap.Show = false
option.VisualMap.Dimension = 0
option.VisualMap.InRange.Color = []string{"#42aaf5", "#00eaf2", "#035bff"}
option.VisualMap.InRange.Color = []string{"#035bff", "#42aaf5", "#00eaf2"}
option.Series = []struct {
Label struct {
Position string "json:\"position\""
@@ -64,7 +74,7 @@ func (tkg *TabKelainanGlobalServices) GetBarChartConf(title string, data models.
X string "json:\"x\""
Y string "json:\"y\""
}{
X: "score",
X: "amount",
Y: "product",
},
},
@@ -82,6 +92,29 @@ func (tkg *TabKelainanGlobalServices) GetBarChartConf(title string, data models.
Type: "shadow",
},
}
option.Graphic = struct {
Type string "json:\"type\""
Left string "json:\"left\""
Top string "json:\"top\""
Style struct {
Text string "json:\"text\""
FontSize string "json:\"fontSize\""
FontWeight string "json:\"fontWeight\""
} "json:\"style\""
}{
Type: "text",
Left: "center",
Top: "middle",
Style: struct {
Text string "json:\"text\""
FontSize string "json:\"fontSize\""
FontWeight string "json:\"fontWeight\""
}{
Text: isEmpty,
FontSize: "15",
FontWeight: "bold",
},
}
return option, nil
}
@@ -126,12 +159,12 @@ func (tkg *TabKelainanGlobalServices) GetKelainanGlobalMCU(mcuID string) (models
}
}
for _, d := range data {
for i, d := range data {
percentage := float64(d.Total) / float64(max) * 100
roundedPercentage := math.Round(percentage*100) / 100
percentStr := strconv.FormatFloat(roundedPercentage, 'f', -1, 64)
chartData.Source = append(chartData.Source, []interface{}{
d.Total, d.Total, d.Test, percentStr,
i, d.Total, d.Test, percentStr,
})
}
@@ -199,3 +232,118 @@ func (tkg *TabKelainanGlobalServices) GetKelainanFisik(mcuID string) (models.Bar
return option, nil
}
func (tkg *TabKelainanGlobalServices) GetKelainanGlobalV2(mcuID string) (models.Barchart, error) {
var option models.Barchart
var data []models.KelainanGlobalModel
q := `
SELECT * FROM (
SELECT Mcu_KelainanID,
Mcu_KelainanName as Test,
count(distinct T_OrderHeaderID) as Total
FROM t_kelainan_lab
JOIN t_orderheader ON T_KelainanLabT_OrderHeaderID = T_OrderHeaderID
JOIN mcu_summarylab ON T_KelainanLabMcu_SummaryLabID = Mcu_SummaryLabID
join mcu_kelainan on Mcu_summaryLabMcu_KelainanID = Mcu_KelainanID
join mcu_kelainangroup on Mcu_KelainanMcu_KelainanGroupID = Mcu_KelainanGroupID
JOIN nat_test ON Mcu_SummaryLabNat_TestID = Nat_TestID AND T_KelainanLabNat_TestID = Mcu_SummaryLabNat_TestID
where T_KelainanLabIsActive = 'Y' and T_OrderHeaderMgm_McuID = ?
group by Mcu_KelainanID
UNION
SELECT Mcu_KelainanID, Mcu_KelainanName as Test,
count(distinct T_OrderHeaderID) as Total
FROM t_kelainan_nonlab
JOIN t_orderheader ON T_KelainanNonLabT_OrderHeaderID = T_OrderHeaderID
JOIN mcu_summarynonlab ON T_KelainanNonLabMcu_SummaryNonlabID = Mcu_SummaryNonlabID
join mcu_kelainan on Mcu_SummaryNonlabMcu_KelainanID = Mcu_KelainanID
join mcu_kelainangroup on Mcu_KelainanMcu_KelainanGroupID = Mcu_KelainanGroupID
JOIN nat_test ON Mcu_SummaryNonlabNat_TestID = Nat_TestID AND
T_KelainanNonLabNat_TestID = Mcu_SummaryNonlabNat_TestID
where T_KelainanNonLabIsActive = 'Y' and T_OrderHeaderMgm_McuID = ?
group by Mcu_KelainanID
UNION
SELECT Mcu_KelainanID, Mcu_KelainanName as Test,
count(distinct T_OrderHeaderID) as Total
FROM t_kelainan_fisik
JOIN t_orderheader ON T_KelainanFiskT_OrderHeaderID = T_OrderHeaderID
JOIN mcu_summaryfisik ON T_KelainanFiskMcu_SummaryFisikID = Mcu_SummaryFisikID AND
Mcu_SummaryFisikID NOT IN (63,67,68,69,70,71,72,73)
join mcu_kelainan on Mcu_SummaryFisikMcu_KelainanID = Mcu_KelainanID
join mcu_kelainangroup on Mcu_KelainanMcu_KelainanGroupID = Mcu_KelainanGroupID
where T_KelainanFiskIsActive = 'Y' and T_OrderHeaderMgm_McuID = ? AND
Mcu_KelainanClasification NOT IN ('who','kemenkes','JNC-VIII','ESC/ESH')
group by Mcu_KelainanID
) a
ORDER BY total DESC
LIMIT 10
`
if err := dbx.Handlex.Select(&data, q, mcuID, mcuID, mcuID); err != nil {
return option, fmt.Errorf("error get data kelainan global %v", err)
}
var jumlahPeserta models.TotalPesertaModel
q = `
SELECT
COUNT(distinct(T_OrderHeaderID)) as peserta,
COUNT( distinct(Mcu_PreregisterPatientsM_PatientID)) as total
FROM mcu_preregister_patients
LEFT JOIN t_orderheader ON Mcu_PreregisterPatientsT_OrderHeaderID = T_OrderHeaderID AND
T_OrderHeaderIsActive = 'Y'
WHERE
Mcu_PreregisterPatientsMgm_McuID = ? AND
Mcu_PreregisterPatientsIsActive = 'Y'
`
if err := dbx.Handlex.Get(&jumlahPeserta, q, mcuID); err != nil {
return option, fmt.Errorf("error get jumlah peserta %v", err)
}
title := "Kelainan Global (10 Terbesar)"
chartData := models.BarDataset{
Source: [][]interface{}{
{"score", "amount", "product", "percentage"},
},
}
for i, d := range data {
percentage := float64(d.Total) / float64(jumlahPeserta.Peserta) * 100
roundedPercentage := math.Round(percentage*100) / 100
percentStr := strconv.FormatFloat(roundedPercentage, 'f', -1, 64)
newText := utils.SplitStrings(d.Test, 2)
chartData.Source = append(chartData.Source, []interface{}{
i, d.Total, newText, percentStr,
})
}
option, err := tkg.GetBarChartConf(title, chartData)
if err != nil {
return option, fmt.Errorf("error insert data to barchart %v", err)
}
return option, nil
}
func (tkg *TabKelainanGlobalServices) GetChartRenderGlobal(mcuID string) ([]models.McuTabModels, error) {
var ret []models.McuTabModels
q := `
SELECT
Mcu_ImageGrafikGroupResult,
Mcu_ImageGrafikGroupMenu,
Mcu_ImageGrafikName,
Mcu_ImageGrafikJsonRender
FROM mgm_mcugrafik
JOIN mcu_image_grafik ON Mcu_ImageGrafikID = Mgm_McuGrafikMcu_ImageGrafikID
WHERE Mgm_McuGrafikMgm_McuID = ?
AND Mcu_ImageGrafikGroupMenu = "GLOBAL"
AND Mgm_McuGrafikIsActive = 'Y'
ORDER BY Mcu_ImageGrafikID
`
if err := dbx.Handlex.Select(&ret, q, mcuID); err != nil {
return ret, fmt.Errorf("error get data tab peserta: %v", err)
}
return ret, nil
}

View File

@@ -4,6 +4,7 @@ import (
"cpone/db"
"cpone/models"
dbx "cpone/package/database"
"cpone/utils"
"fmt"
"math"
"strconv"
@@ -22,22 +23,30 @@ func NewTabKelainanLabServices(store db.AppStore) *TabKelainanLabServices {
}
func (tkl *TabKelainanLabServices) ConfBarchart(title string, data models.BarDataset) (models.Barchart, error) {
option := models.Barchart{}
isEmpty := ""
if len(data.Source) <= 1 {
isEmpty = "Data tidak ditemukan"
}
option := models.Barchart{}
option.Title = struct {
Text string "json:\"text\""
}{title}
Left string `json:"left"`
}{
Text: title,
Left: "center",
}
option.Dataset = data
option.Grid.ContainLabel = true
option.XAxis.Name = "amount"
option.XAxis.Name = "person"
option.YAxis.Type = "category"
option.VisualMap.Orient = "horizontal"
option.VisualMap.Left = "center"
option.VisualMap.Min = 1
option.VisualMap.Max = 100
option.VisualMap.Min = 0
option.VisualMap.Max = 10
option.VisualMap.Show = false
option.VisualMap.Dimension = 0
option.VisualMap.InRange.Color = []string{"#42aaf5", "#00eaf2", "#035bff"}
option.VisualMap.InRange.Color = []string{"#035bff", "#42aaf5", "#00eaf2"}
option.Series = []struct {
Label struct {
Position string "json:\"position\""
@@ -65,7 +74,7 @@ func (tkl *TabKelainanLabServices) ConfBarchart(title string, data models.BarDat
X string "json:\"x\""
Y string "json:\"y\""
}{
X: "score",
X: "amount",
Y: "product",
},
},
@@ -83,29 +92,61 @@ func (tkl *TabKelainanLabServices) ConfBarchart(title string, data models.BarDat
Type: "shadow",
},
}
option.Graphic = struct {
Type string "json:\"type\""
Left string "json:\"left\""
Top string "json:\"top\""
Style struct {
Text string "json:\"text\""
FontSize string "json:\"fontSize\""
FontWeight string "json:\"fontWeight\""
} "json:\"style\""
}{
Type: "text",
Left: "center",
Top: "middle",
Style: struct {
Text string "json:\"text\""
FontSize string "json:\"fontSize\""
FontWeight string "json:\"fontWeight\""
}{
Text: isEmpty,
FontSize: "15",
FontWeight: "bold",
},
}
return option, nil
}
func (tkl *TabKelainanLabServices) ConfBarchartVertical(title string, data []models.KelainanLabModel) (models.BarchartV2, error) {
chartData := models.BarDataset{
Source: [][]interface{}{
{"score", "amount", "product"},
},
}
isEmpty := ""
if len(data) == 0 {
isEmpty = "Data tidak ditemukan"
}
cnt := len(data)
for idx, d := range data {
newText := utils.SplitStrings(d.Mcu_KelainanName, 2)
chartData.Source = append(chartData.Source, []interface{}{
idx, d.Total, d.Mcu_KelainanName,
idx, d.Total, newText,
})
}
option := models.BarchartV2{
Title: struct {
Text string "json:\"text\""
}{title},
Left string `json:"left"`
}{
Text: title,
Left: "center",
},
Dataset: struct {
Source [][]interface{} "json:\"source\""
}{chartData.Source},
@@ -167,7 +208,7 @@ func (tkl *TabKelainanLabServices) ConfBarchartVertical(title string, data []mod
InRange: struct {
Color []string "json:\"color\""
}{
Color: []string{"#42aaf5", "#00eaf2", "#035bff"},
Color: []string{"#035bff", "#42aaf5", "#00eaf2"},
},
},
Series: []struct {
@@ -215,6 +256,29 @@ func (tkl *TabKelainanLabServices) ConfBarchartVertical(title string, data []mod
Type: "shadow",
},
},
Graphic: struct {
Type string "json:\"type\""
Left string "json:\"left\""
Top string "json:\"top\""
Style struct {
Text string "json:\"text\""
FontSize string "json:\"fontSize\""
FontWeight string "json:\"fontWeight\""
} "json:\"style\""
}{
Type: "text",
Left: "center",
Top: "middle",
Style: struct {
Text string "json:\"text\""
FontSize string "json:\"fontSize\""
FontWeight string "json:\"fontWeight\""
}{
Text: isEmpty,
FontSize: "15",
FontWeight: "bold",
},
},
}
return option, nil
@@ -226,46 +290,57 @@ func (tkl *TabKelainanLabServices) GetDataPresentaseKelainanLab(mcuID string) (m
var data []models.KelainanLabModel
q := `
SELECT
Mcu_KelainanName,
COUNT(Mgm_HeaderT_OrderHeaderID) AS total
FROM mgm_header
JOIN mgm_detail ON Mgm_DetailMgm_HeaderID = Mgm_HeaderID
AND Mgm_DetailIsActive = 'Y'
JOIN mcu_kelainan ON Mgm_DetailMcu_KelainanID = Mcu_KelainanID
JOIN mcu_kelainangroup ON Mgm_DetailMcu_KelainanGroupID = Mcu_KelainanGroupID
WHERE Mgm_HeaderIsActive = 'Y' AND Mgm_HeaderMgm_McuID = ?
AND Mgm_HeaderType = 'L'
AND Mgm_HeaderIsNormal = 'N'
GROUP BY Mcu_KelainanID ORDER BY COUNT(Mgm_HeaderT_OrderHeaderID) DESC
SELECT Mcu_KelainanID,
Mcu_KelainanName as Test,
count(distinct T_OrderHeaderID) as total
FROM t_kelainan_lab
JOIN t_orderheader ON T_KelainanLabT_OrderHeaderID = T_OrderHeaderID
JOIN mcu_summarylab ON T_KelainanLabMcu_SummaryLabID = Mcu_SummaryLabID
join mcu_kelainan on Mcu_summaryLabMcu_KelainanID = Mcu_KelainanID
join mcu_kelainangroup on Mcu_KelainanMcu_KelainanGroupID = Mcu_KelainanGroupID
JOIN nat_test ON Mcu_SummaryLabNat_TestID = Nat_TestID AND T_KelainanLabNat_TestID = Mcu_SummaryLabNat_TestID
where T_KelainanLabIsActive = 'Y' and T_OrderHeaderMgm_McuID = ?
group by Mcu_KelainanID
ORDER BY total DESC
LIMIT 10
`
if err := dbx.Handlex.Select(&data, q, mcuID); err != nil {
return option, fmt.Errorf("error get total presentase fisik %v", err)
return option, fmt.Errorf("error get kelainan lab %v", err)
}
defer logger.Sync()
logger.Info("resp data", zap.Any("data", data))
title := "Data Presentase Kelainan Lab"
title := "Kelainan Lab (10 Terbesar)"
chartData := models.BarDataset{
Source: [][]interface{}{
{"score", "amount", "product", "percentage"},
},
}
max := 1
for _, d := range data {
if d.Total >= max {
max = d.Total
}
var jumlahPeserta models.TotalPesertaModel
q = `
SELECT
COUNT(distinct(T_OrderHeaderID)) as peserta,
COUNT( distinct(Mcu_PreregisterPatientsM_PatientID)) as total
FROM mcu_preregister_patients
LEFT JOIN t_orderheader ON Mcu_PreregisterPatientsT_OrderHeaderID = T_OrderHeaderID AND
T_OrderHeaderIsActive = 'Y'
WHERE
Mcu_PreregisterPatientsMgm_McuID = ? AND
Mcu_PreregisterPatientsIsActive = 'Y'
`
if err := dbx.Handlex.Get(&jumlahPeserta, q, mcuID); err != nil {
return option, fmt.Errorf("error get jumlah peserta %v", err)
}
for _, d := range data {
percentage := float64(d.Total) / float64(max) * 100
for i, d := range data {
percentage := float64(d.Total) / float64(jumlahPeserta.Peserta) * 100
roundedPercentage := math.Round(percentage*100) / 100
percentStr := strconv.FormatFloat(roundedPercentage, 'f', -1, 64)
newText := utils.SplitStrings(d.Mcu_KelainanName, 2)
chartData.Source = append(chartData.Source, []interface{}{
d.Total, d.Total, d.Mcu_KelainanName, percentStr,
i, d.Total, newText, percentStr,
})
}
@@ -283,18 +358,18 @@ func (tkl *TabKelainanLabServices) GetHematologi(mcuID string) (models.BarchartV
var data []models.KelainanLabModel
q := `
SELECT Mcu_KelainanName,
COUNT(Mgm_HeaderT_OrderHeaderID) AS total
FROM mgm_header
JOIN mgm_detail ON Mgm_DetailMgm_HeaderID = Mgm_HeaderID AND Mgm_DetailIsActive = 'Y'
JOIN mcu_kelainan ON Mgm_DetailMcu_KelainanID = Mcu_KelainanID
JOIN mcu_kelainangroup ON Mgm_DetailMcu_KelainanGroupID = Mcu_KelainanGroupID
WHERE Mgm_HeaderIsActive = 'Y' AND Mgm_HeaderMgm_McuID = ?
AND Mgm_HeaderType = 'L'
AND Mgm_HeaderIsNormal = 'N'
AND Mcu_KelainanGroupID = 14
GROUP BY Mcu_KelainanID
ORDER BY COUNT(Mgm_HeaderT_OrderHeaderID) DESC
SELECT Mcu_KelainanID,
Mcu_KelainanName as Test,
count(distinct T_OrderHeaderID) as total
FROM t_kelainan_lab
JOIN t_orderheader ON T_KelainanLabT_OrderHeaderID = T_OrderHeaderID
JOIN mcu_summarylab ON T_KelainanLabMcu_SummaryLabID = Mcu_SummaryLabID
join mcu_kelainan on Mcu_summaryLabMcu_KelainanID = Mcu_KelainanID
join mcu_kelainangroup on Mcu_KelainanMcu_KelainanGroupID = Mcu_KelainanGroupID AND Mcu_KelainanGroupID = 14
JOIN nat_test ON Mcu_SummaryLabNat_TestID = Nat_TestID AND T_KelainanLabNat_TestID = Mcu_SummaryLabNat_TestID
where T_KelainanLabIsActive = 'Y' and T_OrderHeaderMgm_McuID = ?
group by Mcu_KelainanID
ORDER BY total DESC
`
if err := dbx.Handlex.Select(&data, q, mcuID); err != nil {
return option, fmt.Errorf("error get hematologi %v", err)
@@ -317,20 +392,20 @@ func (tkl *TabKelainanLabServices) GetUrinalisa(mcuID string) (models.BarchartV2
var data []models.KelainanLabModel
q := `
SELECT
Mcu_KelainanName,
COUNT(Mgm_HeaderT_OrderHeaderID) AS total
FROM mgm_header
JOIN mgm_detail ON Mgm_DetailMgm_HeaderID = Mgm_HeaderID
AND Mgm_DetailIsActive = 'Y'
JOIN mcu_kelainan ON Mgm_DetailMcu_KelainanID = Mcu_KelainanID
JOIN mcu_kelainangroup ON Mgm_DetailMcu_KelainanGroupID = Mcu_KelainanGroupID
WHERE Mgm_HeaderIsActive = 'Y' AND Mgm_HeaderMgm_McuID = ?
AND Mgm_HeaderType = 'L'
AND Mgm_HeaderIsNormal = 'N'
AND Mcu_KelainanGroupID = 15
GROUP BY Mcu_KelainanID
ORDER BY COUNT(Mgm_HeaderT_OrderHeaderID) DESC
SELECT Mcu_KelainanID,
Mcu_KelainanName as Test,
count(distinct T_OrderHeaderID) as total
FROM t_kelainan_lab
JOIN t_orderheader ON T_KelainanLabT_OrderHeaderID = T_OrderHeaderID
JOIN mcu_summarylab ON T_KelainanLabMcu_SummaryLabID = Mcu_SummaryLabID
join mcu_kelainan on Mcu_summaryLabMcu_KelainanID = Mcu_KelainanID
join mcu_kelainangroup on Mcu_KelainanMcu_KelainanGroupID = Mcu_KelainanGroupID
AND Mcu_KelainanGroupID = 15
JOIN nat_test ON Mcu_SummaryLabNat_TestID = Nat_TestID
AND T_KelainanLabNat_TestID = Mcu_SummaryLabNat_TestID
where T_KelainanLabIsActive = 'Y' and T_OrderHeaderMgm_McuID = ?
group by Mcu_KelainanID
ORDER BY total DESC
`
if err := dbx.Handlex.Select(&data, q, mcuID); err != nil {
return option, fmt.Errorf("error get urinalisa %v", err)
@@ -353,19 +428,18 @@ func (tkl *TabKelainanLabServices) GetGangguanFungsiHati(mcuID string) (models.B
var data []models.KelainanLabModel
q := `
SELECT Mcu_KelainanName,
COUNT(Mgm_HeaderT_OrderHeaderID) AS total
FROM mgm_header
JOIN mgm_detail ON Mgm_DetailMgm_HeaderID = Mgm_HeaderID
AND Mgm_DetailIsActive = 'Y'
JOIN mcu_kelainan ON Mgm_DetailMcu_KelainanID = Mcu_KelainanID
JOIN mcu_kelainangroup ON Mgm_DetailMcu_KelainanGroupID = Mcu_KelainanGroupID
WHERE Mgm_HeaderIsActive = 'Y' AND Mgm_HeaderMgm_McuID = ?
AND Mgm_HeaderType = 'L'
AND Mgm_HeaderIsNormal = 'N'
AND Mcu_KelainanGroupID = 16
GROUP BY Mcu_KelainanID
ORDER BY COUNT(Mgm_HeaderT_OrderHeaderID) DESC
SELECT Mcu_KelainanID,
Mcu_KelainanName as Test,
count(distinct T_OrderHeaderID) as total
FROM t_kelainan_lab
JOIN t_orderheader ON T_KelainanLabT_OrderHeaderID = T_OrderHeaderID
JOIN mcu_summarylab ON T_KelainanLabMcu_SummaryLabID = Mcu_SummaryLabID
join mcu_kelainan on Mcu_summaryLabMcu_KelainanID = Mcu_KelainanID
join mcu_kelainangroup on Mcu_KelainanMcu_KelainanGroupID = Mcu_KelainanGroupID AND Mcu_KelainanGroupID = 16
JOIN nat_test ON Mcu_SummaryLabNat_TestID = Nat_TestID AND T_KelainanLabNat_TestID = Mcu_SummaryLabNat_TestID
where T_KelainanLabIsActive = 'Y' and T_OrderHeaderMgm_McuID = ?
group by Mcu_KelainanID
ORDER BY total DESC
`
if err := dbx.Handlex.Select(&data, q, mcuID); err != nil {
return option, fmt.Errorf("error get gangguan fungsi hati %v", err)
@@ -388,17 +462,19 @@ func (tkl *TabKelainanLabServices) GetGangguanMetabolismeLemak(mcuID string) (mo
var data []models.KelainanLabModel
q := `
SELECT
IFNULL(Mcu_KelainanName,'Normal') AS Mcu_KelainanName,
COUNT(Mgm_HeaderT_OrderHeaderID) AS total
FROM mgm_header
LEFT JOIN mgm_detail ON Mgm_DetailMgm_HeaderID = Mgm_HeaderID AND Mgm_DetailIsActive = 'Y'
LEFT JOIN mcu_kelainan ON Mgm_DetailMcu_KelainanID = Mcu_KelainanID
LEFT JOIN mcu_kelainangroup ON Mgm_DetailMcu_KelainanGroupID = Mcu_KelainanGroupID
WHERE Mgm_HeaderIsActive = 'Y' AND Mgm_HeaderNat_TestCode IN ( '10520300','10520400')
AND Mgm_HeaderMgm_McuID = ?
GROUP BY Mcu_KelainanID
ORDER BY total DESC
SELECT Mcu_KelainanID,
Mcu_KelainanName as Test,
count(distinct T_OrderHeaderID) as total
FROM t_kelainan_lab
JOIN t_orderheader ON T_KelainanLabT_OrderHeaderID = T_OrderHeaderID
JOIN mcu_summarylab ON T_KelainanLabMcu_SummaryLabID = Mcu_SummaryLabID
join mcu_kelainan on Mcu_summaryLabMcu_KelainanID = Mcu_KelainanID
join mcu_kelainangroup on Mcu_KelainanMcu_KelainanGroupID = Mcu_KelainanGroupID
JOIN nat_test ON Mcu_SummaryLabNat_TestID = Nat_TestID AND
T_KelainanLabNat_TestID = Mcu_SummaryLabNat_TestID AND Nat_TestCode IN ( '10520300','10520400')
where T_KelainanLabIsActive = 'Y' and T_OrderHeaderMgm_McuID = ?
group by Mcu_KelainanID
ORDER BY total DESC
`
if err := dbx.Handlex.Select(&data, q, mcuID); err != nil {
return option, fmt.Errorf("error get gangguan metabolisme lemak %v", err)
@@ -421,16 +497,19 @@ func (tkl *TabKelainanLabServices) GetPeningkatanGlukosa(mcuID string) (models.B
var data []models.KelainanLabModel
q := `
SELECT IFNULL(Mcu_KelainanName,'Normal') AS Mcu_KelainanName,
COUNT(Mgm_HeaderT_OrderHeaderID) AS total
FROM mgm_header
LEFT JOIN mgm_detail ON Mgm_DetailMgm_HeaderID = Mgm_HeaderID AND Mgm_DetailIsActive = 'Y'
LEFT JOIN mcu_kelainan ON Mgm_DetailMcu_KelainanID = Mcu_KelainanID
LEFT JOIN mcu_kelainangroup ON Mgm_DetailMcu_KelainanGroupID = Mcu_KelainanGroupID
WHERE Mgm_HeaderIsActive = 'Y' AND Mgm_HeaderNat_TestCode = 10540200
AND Mgm_HeaderMgm_McuID = ?
GROUP BY Mcu_KelainanID
ORDER BY total DESC
SELECT Mcu_KelainanID,
Mcu_KelainanName as Test,
count(distinct T_OrderHeaderID) as total
FROM t_kelainan_lab
JOIN t_orderheader ON T_KelainanLabT_OrderHeaderID = T_OrderHeaderID
JOIN mcu_summarylab ON T_KelainanLabMcu_SummaryLabID = Mcu_SummaryLabID
join mcu_kelainan on Mcu_summaryLabMcu_KelainanID = Mcu_KelainanID
join mcu_kelainangroup on Mcu_KelainanMcu_KelainanGroupID = Mcu_KelainanGroupID
JOIN nat_test ON Mcu_SummaryLabNat_TestID = Nat_TestID AND
T_KelainanLabNat_TestID = Mcu_SummaryLabNat_TestID AND Nat_TestCode IN ( '10540200')
where T_KelainanLabIsActive = 'Y' and T_OrderHeaderMgm_McuID = ?
group by Mcu_KelainanID
ORDER BY total DESC
`
if err := dbx.Handlex.Select(&data, q, mcuID); err != nil {
return option, fmt.Errorf("error get peningkatan glukosa %v", err)
@@ -446,3 +525,26 @@ func (tkl *TabKelainanLabServices) GetPeningkatanGlukosa(mcuID string) (models.B
return option, nil
}
func (tkl *TabKelainanLabServices) GetChartRenderLab(mcuID string) ([]models.McuTabModels, error) {
var ret []models.McuTabModels
q := `
SELECT
Mcu_ImageGrafikGroupResult,
Mcu_ImageGrafikGroupMenu,
Mcu_ImageGrafikName,
Mcu_ImageGrafikJsonRender
FROM mgm_mcugrafik
JOIN mcu_image_grafik ON Mcu_ImageGrafikID = Mgm_McuGrafikMcu_ImageGrafikID
WHERE Mgm_McuGrafikMgm_McuID = ?
AND Mcu_ImageGrafikGroupResult = "LAB"
AND Mgm_McuGrafikIsActive = 'Y'
ORDER BY Mcu_ImageGrafikID
`
if err := dbx.Handlex.Select(&ret, q, mcuID); err != nil {
return ret, fmt.Errorf("error get data tab peserta: %v", err)
}
return ret, nil
}

View File

@@ -4,6 +4,7 @@ import (
"cpone/db"
"cpone/models"
dbx "cpone/package/database"
"cpone/utils"
"fmt"
"math"
"strconv"
@@ -22,21 +23,30 @@ func NewTabKelainanNonLabServices(store db.AppStore) *TabKelainanNonLabServices
}
func (tknl *TabKelainanNonLabServices) GetBarChartConf(title string, data models.BarDataset) (models.Barchart, error) {
isEmpty := ""
if len(data.Source) <= 1 {
isEmpty = "Data tidak ditemukan"
}
option := models.Barchart{}
option.Title = struct {
Text string "json:\"text\""
}{title}
Left string `json:"left"`
}{
Text: title,
Left: "center",
}
option.Dataset = data
option.Grid.ContainLabel = true
option.XAxis.Name = "amount"
option.XAxis.Name = "person"
option.YAxis.Type = "category"
option.VisualMap.Orient = "horizontal"
option.VisualMap.Left = "center"
option.VisualMap.Min = 10
option.VisualMap.Max = 100
option.VisualMap.Min = 0
option.VisualMap.Max = 4
option.VisualMap.Show = false
option.VisualMap.Dimension = 0
option.VisualMap.InRange.Color = []string{"#42aaf5", "#00eaf2", "#035bff"}
option.VisualMap.InRange.Color = []string{"#035bff", "#42aaf5", "#00eaf2"}
option.Series = []struct {
Label struct {
Position string "json:\"position\""
@@ -82,6 +92,29 @@ func (tknl *TabKelainanNonLabServices) GetBarChartConf(title string, data models
Type: "shadow",
},
}
option.Graphic = struct {
Type string "json:\"type\""
Left string "json:\"left\""
Top string "json:\"top\""
Style struct {
Text string "json:\"text\""
FontSize string "json:\"fontSize\""
FontWeight string "json:\"fontWeight\""
} "json:\"style\""
}{
Type: "text",
Left: "center",
Top: "middle",
Style: struct {
Text string "json:\"text\""
FontSize string "json:\"fontSize\""
FontWeight string "json:\"fontWeight\""
}{
Text: isEmpty,
FontSize: "15",
FontWeight: "bold",
},
}
return option, nil
}
@@ -93,17 +126,34 @@ func (tknl *TabKelainanNonLabServices) ConfBarchartVertical(title string, data [
},
}
isEmpty := ""
if len(data) == 0 {
isEmpty = "Data tidak ditemukan"
}
cnt := len(data)
for idx, d := range data {
// if len(d.Test) > 30 {
// var newText = d.Test[:30] + "- \n" + d.Test[30:]
// chartData.Source = append(chartData.Source, []interface{}{
// idx, d.Total, newText,
// })
// continue
// }
newText := utils.SplitStrings(d.Test, 2)
chartData.Source = append(chartData.Source, []interface{}{
idx, d.Total, d.Kelainan,
idx, d.Total, newText,
})
}
option := models.BarchartV2{
Title: struct {
Text string "json:\"text\""
}{title},
Left string `json:"left"`
}{
Text: title,
Left: "center",
},
Dataset: struct {
Source [][]interface{} "json:\"source\""
}{chartData.Source},
@@ -165,7 +215,7 @@ func (tknl *TabKelainanNonLabServices) ConfBarchartVertical(title string, data [
InRange: struct {
Color []string "json:\"color\""
}{
Color: []string{"#42aaf5", "#00eaf2", "#035bff"},
Color: []string{"#035bff", "#42aaf5", "#00eaf2"},
},
},
Series: []struct {
@@ -213,6 +263,29 @@ func (tknl *TabKelainanNonLabServices) ConfBarchartVertical(title string, data [
Type: "shadow",
},
},
Graphic: struct {
Type string "json:\"type\""
Left string "json:\"left\""
Top string "json:\"top\""
Style struct {
Text string "json:\"text\""
FontSize string "json:\"fontSize\""
FontWeight string "json:\"fontWeight\""
} "json:\"style\""
}{
Type: "text",
Left: "center",
Top: "middle",
Style: struct {
Text string "json:\"text\""
FontSize string "json:\"fontSize\""
FontWeight string "json:\"fontWeight\""
}{
Text: isEmpty,
FontSize: "15",
FontWeight: "bold",
},
},
}
return option, nil
@@ -224,45 +297,57 @@ func (tknl *TabKelainanNonLabServices) GetDataKelNonLab(mcuID string) (models.Ba
var data []models.KelNonLabModel
q := `
SELECT concat(Nat_TestName,"/",Mcu_KelainanName) AS kelainan,
COUNT(Mgm_HeaderT_OrderHeaderID) AS total
FROM mgm_header
LEFT JOIN mgm_detail ON Mgm_DetailMgm_HeaderID = Mgm_HeaderID AND Mgm_DetailIsActive = 'Y'
LEFT JOIN mcu_kelainan ON Mgm_DetailMcu_KelainanID = Mcu_KelainanID
LEFT JOIN mcu_kelainangroup ON Mgm_DetailMcu_KelainanGroupID = Mcu_KelainanGroupID
LEFT JOIN nat_test ON Nat_TestCode = Mgm_HeaderNat_TestCode
WHERE Mgm_HeaderIsActive = 'Y' AND Mgm_HeaderMgm_McuID = ?
AND Mgm_HeaderType = 'NL'
AND Mgm_HeaderIsNormal = 'N'
GROUP BY Mcu_KelainanID
ORDER BY COUNT(Mgm_HeaderT_OrderHeaderID) DESC
SELECT Mcu_KelainanID, Mcu_KelainanName as Test,
count(distinct T_OrderHeaderID) as total
FROM t_kelainan_nonlab
JOIN t_orderheader ON T_KelainanNonLabT_OrderHeaderID = T_OrderHeaderID
JOIN mcu_summarynonlab ON T_KelainanNonLabMcu_SummaryNonlabID = Mcu_SummaryNonlabID
join mcu_kelainan on Mcu_SummaryNonlabMcu_KelainanID = Mcu_KelainanID
join mcu_kelainangroup on Mcu_KelainanMcu_KelainanGroupID = Mcu_KelainanGroupID
JOIN nat_test ON Mcu_SummaryNonlabNat_TestID = Nat_TestID AND
T_KelainanNonLabNat_TestID = Mcu_SummaryNonlabNat_TestID
where T_KelainanNonLabIsActive = 'Y' and T_OrderHeaderMgm_McuID = ?
group by Mcu_KelainanID
ORDER BY total DESC
LIMIT 10
`
if err := dbx.Handlex.Select(&data, q, mcuID); err != nil {
return option, fmt.Errorf("error get data kelainan global mcu %v", err)
}
defer logger.Sync()
logger.Info("resp data", zap.Any("data", data))
title := "Data Presentase Kelainan Non Lab"
title := "Kelainan Non Lab (10 Terbesar)"
chartData := models.BarDataset{
Source: [][]interface{}{
{"score", "amount", "product", "percentage"},
},
}
max := 1
for _, d := range data {
if d.Total >= max {
max = d.Total
}
var jumlahPeserta models.TotalPesertaModel
q = `
SELECT
COUNT(distinct(T_OrderHeaderID)) as peserta,
COUNT( distinct(Mcu_PreregisterPatientsM_PatientID)) as total
FROM mcu_preregister_patients
LEFT JOIN t_orderheader ON Mcu_PreregisterPatientsT_OrderHeaderID = T_OrderHeaderID AND
T_OrderHeaderIsActive = 'Y'
WHERE
Mcu_PreregisterPatientsMgm_McuID = ? AND
Mcu_PreregisterPatientsIsActive = 'Y'
`
if err := dbx.Handlex.Get(&jumlahPeserta, q, mcuID); err != nil {
return option, fmt.Errorf("error get jumlah peserta %v", err)
}
for _, d := range data {
percentage := float64(d.Total) / float64(max) * 100
for i, d := range data {
percentage := float64(d.Total) / float64(jumlahPeserta.Peserta) * 100
roundedPercentage := math.Round(percentage*100) / 100
percentStr := strconv.FormatFloat(roundedPercentage, 'f', -1, 64)
newText := utils.SplitStrings(d.Test, 2)
chartData.Source = append(chartData.Source, []interface{}{
d.Total, d.Total, d.Kelainan, percentStr,
i, d.Total, newText, percentStr,
})
}
@@ -280,21 +365,23 @@ func (tknl *TabKelainanNonLabServices) GetThoraxPA(mcuID string) (models.Barchar
var data []models.KelNonLabModel
q := `
SELECT
IFNULL(Mcu_KelainanName,'Normal') AS kelainan,
COUNT(Mgm_HeaderT_OrderHeaderID) AS total
FROM mgm_header
LEFT JOIN mgm_detail ON Mgm_DetailMgm_HeaderID = Mgm_HeaderID AND Mgm_DetailIsActive = 'Y'
LEFT JOIN mcu_kelainan ON Mgm_DetailMcu_KelainanID = Mcu_KelainanID
LEFT JOIN mcu_kelainangroup ON Mgm_DetailMcu_KelainanGroupID = Mcu_KelainanGroupID
WHERE Mgm_HeaderIsActive = 'Y' AND Mgm_HeaderNat_TestCode = 30150100
AND Mgm_HeaderIsNormal = 'N' AND Mgm_HeaderMgm_McuID = ?
GROUP BY Mcu_KelainanID
ORDER BY total DESC
SELECT Mcu_KelainanID, Mcu_KelainanName as Test,
count(distinct T_OrderHeaderID) as total
FROM t_kelainan_nonlab
JOIN t_orderheader ON T_KelainanNonLabT_OrderHeaderID = T_OrderHeaderID
JOIN mcu_summarynonlab ON T_KelainanNonLabMcu_SummaryNonlabID = Mcu_SummaryNonlabID
join mcu_kelainan on Mcu_SummaryNonlabMcu_KelainanID = Mcu_KelainanID
join mcu_kelainangroup on Mcu_KelainanMcu_KelainanGroupID = Mcu_KelainanGroupID
JOIN nat_test ON Mcu_SummaryNonlabNat_TestID = Nat_TestID AND
T_KelainanNonLabNat_TestID = Mcu_SummaryNonlabNat_TestID AND Nat_TestID = 5798
where T_KelainanNonLabIsActive = 'Y' and T_OrderHeaderMgm_McuID = ?
group by Mcu_KelainanID
ORDER BY total DESC
LIMIT 10
`
if err := dbx.Handlex.Select(&data, q, mcuID); err != nil {
return option, fmt.Errorf("error get data kelainan global mcu %v", err)
return option, fmt.Errorf("error get data thorax pa %v", err)
}
defer logger.Sync()
logger.Info("resp data", zap.Any("data", data))
@@ -307,3 +394,123 @@ func (tknl *TabKelainanNonLabServices) GetThoraxPA(mcuID string) (models.Barchar
return option, nil
}
func (tknl *TabKelainanNonLabServices) GetGangguanJantung(mcuID string) (models.BarchartV2, error) {
var option models.BarchartV2
var data []models.KelNonLabModel
q := `
SELECT Mcu_KelainanID, Mcu_KelainanName as Test,
count(distinct T_OrderHeaderID) as total
FROM t_kelainan_nonlab
JOIN t_orderheader ON T_KelainanNonLabT_OrderHeaderID = T_OrderHeaderID
JOIN mcu_summarynonlab ON T_KelainanNonLabMcu_SummaryNonlabID = Mcu_SummaryNonlabID
join mcu_kelainan on Mcu_SummaryNonlabMcu_KelainanID = Mcu_KelainanID
join mcu_kelainangroup on Mcu_KelainanMcu_KelainanGroupID = Mcu_KelainanGroupID AND
Mcu_KelainanGroupID = 10
JOIN nat_test ON Mcu_SummaryNonlabNat_TestID = Nat_TestID AND
T_KelainanNonLabNat_TestID = Mcu_SummaryNonlabNat_TestID
where T_KelainanNonLabIsActive = 'Y' and T_OrderHeaderMgm_McuID = ?
group by Mcu_KelainanID
ORDER BY total DESC
LIMIT 10
`
if err := dbx.Handlex.Select(&data, q, mcuID); err != nil {
return option, fmt.Errorf("error get data gangguan jantung %v", err)
}
title := "Gangguan Jantung"
option, err := tknl.ConfBarchartVertical(title, data)
if err != nil {
return option, fmt.Errorf("error insert data into chart %v", err)
}
return option, nil
}
func (tknl *TabKelainanNonLabServices) GetAutospirometri(mcuID string) (models.BarchartV2, error) {
var option models.BarchartV2
var data []models.KelNonLabModel
q := `
SELECT Mcu_KelainanID, Mcu_KelainanName as Test,
count(distinct T_OrderHeaderID) as total
FROM t_kelainan_nonlab
JOIN t_orderheader ON T_KelainanNonLabT_OrderHeaderID = T_OrderHeaderID
JOIN mcu_summarynonlab ON T_KelainanNonLabMcu_SummaryNonlabID = Mcu_SummaryNonlabID
join mcu_kelainan on Mcu_SummaryNonlabMcu_KelainanID = Mcu_KelainanID
join mcu_kelainangroup on Mcu_KelainanMcu_KelainanGroupID = Mcu_KelainanGroupID
JOIN nat_test ON Mcu_SummaryNonlabNat_TestID = Nat_TestID AND
T_KelainanNonLabNat_TestID = Mcu_SummaryNonlabNat_TestID AND Nat_TestID = 5321
where T_KelainanNonLabIsActive = 'Y' and T_OrderHeaderMgm_McuID = ?
group by Mcu_KelainanID
ORDER BY total DESC
LIMIT 10
`
if err := dbx.Handlex.Select(&data, q, mcuID); err != nil {
return option, fmt.Errorf("error get data autspirometri %v", err)
}
title := "Spirometri"
option, err := tknl.ConfBarchartVertical(title, data)
if err != nil {
return option, fmt.Errorf("error insert data into chart %v", err)
}
return option, nil
}
func (tknl *TabKelainanNonLabServices) GetPendengaran(mcuID string) (models.BarchartV2, error) {
var option models.BarchartV2
var data []models.KelNonLabModel
q := `
SELECT Mcu_KelainanID, Mcu_KelainanName as Test,
count(distinct T_OrderHeaderID) as total
FROM t_kelainan_nonlab
JOIN t_orderheader ON T_KelainanNonLabT_OrderHeaderID = T_OrderHeaderID
JOIN mcu_summarynonlab ON T_KelainanNonLabMcu_SummaryNonlabID = Mcu_SummaryNonlabID
join mcu_kelainan on Mcu_SummaryNonlabMcu_KelainanID = Mcu_KelainanID
join mcu_kelainangroup on Mcu_KelainanMcu_KelainanGroupID = Mcu_KelainanGroupID
JOIN nat_test ON Mcu_SummaryNonlabNat_TestID = Nat_TestID AND
T_KelainanNonLabNat_TestID = Mcu_SummaryNonlabNat_TestID AND Nat_TestID = 5308
where T_KelainanNonLabIsActive = 'Y' and T_OrderHeaderMgm_McuID = ?
group by Mcu_KelainanID
ORDER BY total DESC
LIMIT 10
`
if err := dbx.Handlex.Select(&data, q, mcuID); err != nil {
return option, fmt.Errorf("error get data gangguan pendengaran %v", err)
}
title := "Gangguan Pendengaran"
option, err := tknl.ConfBarchartVertical(title, data)
if err != nil {
return option, fmt.Errorf("error insert data into chart %v", err)
}
return option, nil
}
func (tknl *TabKelainanNonLabServices) GetChartRenderNonLab(mcuID string) ([]models.McuTabModels, error) {
var ret []models.McuTabModels
q := `
SELECT
Mcu_ImageGrafikGroupResult,
Mcu_ImageGrafikGroupMenu,
Mcu_ImageGrafikName,
Mcu_ImageGrafikJsonRender
FROM mgm_mcugrafik
JOIN mcu_image_grafik ON Mcu_ImageGrafikID = Mgm_McuGrafikMcu_ImageGrafikID
WHERE Mgm_McuGrafikMgm_McuID = ?
AND Mcu_ImageGrafikGroupResult = "NONLAB"
AND Mgm_McuGrafikIsActive = 'Y'
ORDER BY Mcu_ImageGrafikID
`
if err := dbx.Handlex.Select(&ret, q, mcuID); err != nil {
return ret, fmt.Errorf("error get data tab peserta: %v", err)
}
return ret, nil
}

View File

@@ -101,14 +101,16 @@ func (tkp *TabKepersertaanServices) GetTotalKepesertaanMCU(mcuID string) (models
q := `
SELECT
COUNT(mo.Mcu_OrderID) AS peserta,
mm.Mgm_McuTotalParticipant
FROM mgm_mcu mm
LEFT JOIN t_orderheader toh ON toh.T_OrderHeaderMgm_McuID = mm.Mgm_McuID
AND T_OrderHeaderIsActive = 'Y'
LEFT JOIN mcu_order mo ON mo.Mcu_OrderT_OrderHeaderID = toh.T_OrderHeaderID
WHERE mm.Mgm_McuID = ? AND mm.Mgm_McuIsActive = 'Y'
COUNT(distinct(T_OrderHeaderID)) as peserta,
COUNT( distinct(Mcu_PreregisterPatientsM_PatientID)) as total
FROM mcu_preregister_patients
LEFT JOIN t_orderheader ON Mcu_PreregisterPatientsT_OrderHeaderID = T_OrderHeaderID AND
T_OrderHeaderIsActive = 'Y'
WHERE
Mcu_PreregisterPatientsMgm_McuID = ? AND
Mcu_PreregisterPatientsIsActive = 'Y'
`
if err := dbx.Handlex.Get(&data, q, mcuID); err != nil {
return option, fmt.Errorf("error get total participant %v", err)
}
@@ -116,10 +118,10 @@ func (tkp *TabKepersertaanServices) GetTotalKepesertaanMCU(mcuID string) (models
logger.Info("resp data", zap.Any("data", data))
title := "Peserta MCU"
subtext := "Total Peserta " + strconv.Itoa(data.Mgm_McuTotalParticipant)
subtext := "Total Peserta " + strconv.Itoa(data.Total)
chartData := []models.SeriesData{}
if data.Mgm_McuTotalParticipant == 0 {
if data.Total == 0 {
chartData = append(chartData, models.SeriesData{Value: 0, Name: "No Data"})
} else {
chartData = []models.SeriesData{
@@ -128,8 +130,8 @@ func (tkp *TabKepersertaanServices) GetTotalKepesertaanMCU(mcuID string) (models
Name: "Sudah MCU: " + strconv.Itoa(data.Peserta) + " peserta",
},
{
Value: data.Mgm_McuTotalParticipant - data.Peserta,
Name: "Belum MCU: " + strconv.Itoa(data.Mgm_McuTotalParticipant-data.Peserta) + " peserta",
Value: data.Total - data.Peserta,
Name: "Belum MCU: " + strconv.Itoa(data.Total-data.Peserta) + " peserta",
},
}
}
@@ -152,21 +154,14 @@ func (tkp *TabKepersertaanServices) GetKepesertaanByGender(mcuID string) (models
chartData := []models.SeriesData{}
q := `
SELECT
CASE
WHEN M_PatientGender = 'male' THEN 'Laki-laki'
WHEN M_PatientGender = 'female' THEN 'Perempuan'
ELSE M_PatientGender
END AS M_PatientGender,
COUNT(*) AS Jumlah
FROM mcu_order
JOIN t_orderheader ON Mcu_OrderT_OrderHeaderID = T_OrderHeaderID
AND T_OrderHeaderIsActive = 'Y'
LEFT JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID
AND M_PatientIsActive = 'Y'
WHERE Mcu_OrderMgm_McuID = ?
SELECT IF(M_PatientGender = 'male','Laki-laki','Perempuan') as M_PatientGender,
COUNT(T_OrderHeaderID) as Jumlah
FROM t_orderheader
LEFT JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID AND M_PatientIsActive = 'Y'
WHERE T_OrderHeaderMgm_McuID = ? AND T_OrderHeaderIsActive = 'Y'
GROUP BY M_PatientGender
`
if err := dbx.Handlex.Select(&data, q, mcuID); err != nil {
return option, fmt.Errorf("error get total gender %v", err)
}
@@ -202,24 +197,23 @@ func (tkp *TabKepersertaanServices) GetKepesertaanByUmur(mcuID string) (models.P
chartData := []models.SeriesData{}
q := `
SELECT
SELECT
CASE
WHEN LEFT(T_OrderHeaderM_PatientAge,2) < '30' then "1. < 30 tahun"
WHEN LEFT(T_OrderHeaderM_PatientAge,2) >= '30' AND LEFT(T_OrderHeaderM_PatientAge,2) < '40' then "2. 30 -< 40 tahun"
WHEN LEFT(T_OrderHeaderM_PatientAge,2) >= '40' AND LEFT(T_OrderHeaderM_PatientAge,2) < '50' then "3. 40 - < 50 tahun"
WHEN LEFT(T_OrderHeaderM_PatientAge,2) >= '50' then "4. > 50 tahun" else ""
WHEN LEFT(T_OrderHeaderM_PatientAge,2) < '30' THEN "1. < 30 tahun"
WHEN LEFT(T_OrderHeaderM_PatientAge,2) >= '30' AND left(T_OrderHeaderM_PatientAge,2) < '40' THEN "2. 30 -< 40 tahun"
WHEN LEFT(T_OrderHeaderM_PatientAge,2) >= '40' AND left(T_OrderHeaderM_PatientAge,2) < '50' THEN "3. 40 - < 50 tahun"
WHEN LEFT(T_OrderHeaderM_PatientAge,2) >= '50' THEN "4. > 50 tahun" ELSE ""
END AS umur,
COUNT(Mcu_OrderT_OrderHeaderID) AS total
FROM mcu_order
JOIN t_orderheader ON Mcu_OrderT_OrderHeaderID = T_OrderHeaderID AND T_OrderHeaderIsActive = 'Y'
COUNT(T_OrderHeaderID) as total
FROM t_orderheader
LEFT JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID AND M_PatientIsActive = 'Y'
WHERE Mcu_OrderMgm_McuID = ?
GROUP BY
WHERE t_orderheaderMgm_McuID = ? AND T_OrderHeaderIsActive = 'Y'
GROUP BY
CASE
WHEN LEFT(T_OrderHeaderM_PatientAge,2) < '30' then "1. < 30 tahun"
WHEN LEFT(T_OrderHeaderM_PatientAge,2) >= '30' AND LEFT(T_OrderHeaderM_PatientAge,2) < '40' then "2. 30 -< 40 tahun"
WHEN LEFT(T_OrderHeaderM_PatientAge,2) >= '40' AND LEFT(T_OrderHeaderM_PatientAge,2) < '50' then "3. 40 - < 50 tahun"
WHEN LEFT(T_OrderHeaderM_PatientAge,2) >= '50' then "4. > 50 tahun" else ""
WHEN LEFT(T_OrderHeaderM_PatientAge,2) < '30' THEN "1. < 30 tahun"
WHEN LEFT(T_OrderHeaderM_PatientAge,2) >= '30' AND left(T_OrderHeaderM_PatientAge,2) < '40' THEN "2. 30 -< 40 tahun"
WHEN LEFT(T_OrderHeaderM_PatientAge,2) >= '40' AND left(T_OrderHeaderM_PatientAge,2) < '50' THEN "3. 40 - < 50 tahun"
WHEN LEFT(T_OrderHeaderM_PatientAge,2) >= '50' THEN "4. > 50 tahun" ELSE ""
END
ORDER BY umur
`
@@ -248,3 +242,26 @@ func (tkp *TabKepersertaanServices) GetKepesertaanByUmur(mcuID string) (models.P
return option, nil
}
func (tkp *TabKepersertaanServices) GetChartRenderPeserta(mcuID string) ([]models.McuTabModels, error) {
var ret []models.McuTabModels
q := `
SELECT
Mcu_ImageGrafikGroupResult,
Mcu_ImageGrafikGroupMenu,
Mcu_ImageGrafikName,
Mcu_ImageGrafikJsonRender
FROM mgm_mcugrafik
JOIN mcu_image_grafik ON Mcu_ImageGrafikID = Mgm_McuGrafikMcu_ImageGrafikID
WHERE Mgm_McuGrafikMgm_McuID = ?
AND Mcu_ImageGrafikGroupMenu = "PESERTA"
AND Mgm_McuGrafikIsActive = 'Y'
ORDER BY Mcu_ImageGrafikID
`
if err := dbx.Handlex.Select(&ret, q, mcuID); err != nil {
return ret, fmt.Errorf("error get data tab peserta: %v", err)
}
return ret, nil
}

View File

@@ -230,3 +230,78 @@ func (tks *TabKesimpulanServices) GetListKesimpulanFisik(id string) ([]models.Mo
return listFisik, nil
}
func (tks *TabKesimpulanServices) GetListKesimpulanLabV2(id string) ([]models.ModelKesimpulanLab, error) {
var data []models.ModelKesimpulanLab
q := `
SELECT Mcu_KelainanID as nomor,
Mcu_KelainanName as Test,
count(distinct T_OrderHeaderID) as total
FROM t_kelainan_lab
JOIN t_orderheader ON T_KelainanLabT_OrderHeaderID = T_OrderHeaderID
JOIN mcu_summarylab ON T_KelainanLabMcu_SummaryLabID = Mcu_SummaryLabID
join mcu_kelainan on Mcu_summaryLabMcu_KelainanID = Mcu_KelainanID
join mcu_kelainangroup on Mcu_KelainanMcu_KelainanGroupID = Mcu_KelainanGroupID
JOIN nat_test ON Mcu_SummaryLabNat_TestID = Nat_TestID AND T_KelainanLabNat_TestID = Mcu_SummaryLabNat_TestID
where T_KelainanLabIsActive = 'Y' and T_OrderHeaderMgm_McuID = ?
group by Mcu_KelainanID
ORDER BY total DESC
LIMIT 3
`
if err := dbx.Handlex.Select(&data, q, id); err != nil {
return data, fmt.Errorf("error get data top 3 kelainan lab %v", err)
}
return data, nil
}
func (tks *TabKesimpulanServices) GetListKesimpulanNonLabV2(id string) ([]models.ModelKesimpulanLab, error) {
var data []models.ModelKesimpulanLab
q := `
SELECT Mcu_KelainanID as nomor, Mcu_KelainanName as Test,
count(distinct T_OrderHeaderID) as total
FROM t_kelainan_nonlab
JOIN t_orderheader ON T_KelainanNonLabT_OrderHeaderID = T_OrderHeaderID
JOIN mcu_summarynonlab ON T_KelainanNonLabMcu_SummaryNonlabID = Mcu_SummaryNonlabID
join mcu_kelainan on Mcu_SummaryNonlabMcu_KelainanID = Mcu_KelainanID
join mcu_kelainangroup on Mcu_KelainanMcu_KelainanGroupID = Mcu_KelainanGroupID
JOIN nat_test ON Mcu_SummaryNonlabNat_TestID = Nat_TestID AND
T_KelainanNonLabNat_TestID = Mcu_SummaryNonlabNat_TestID
where T_KelainanNonLabIsActive = 'Y' and T_OrderHeaderMgm_McuID = ?
group by Mcu_KelainanID
ORDER BY total DESC
LIMIT 3
`
if err := dbx.Handlex.Select(&data, q, id); err != nil {
return data, fmt.Errorf("error get data top 3 kelainan non lab %v", err)
}
return data, nil
}
func (tks *TabKesimpulanServices) GetListKesimpulanFisikV2(id string) ([]models.ModelKesimpulanLab, error) {
var data []models.ModelKesimpulanLab
q := `
SELECT Mcu_KelainanID as nomor, Mcu_KelainanName as Test,
count(distinct T_OrderHeaderID) as total
FROM t_kelainan_fisik
JOIN t_orderheader ON T_KelainanFiskT_OrderHeaderID = T_OrderHeaderID
JOIN mcu_summaryfisik ON T_KelainanFiskMcu_SummaryFisikID = Mcu_SummaryFisikID AND
Mcu_SummaryFisikID NOT IN (63,67,68,69,70,71,72,73)
join mcu_kelainan on Mcu_SummaryFisikMcu_KelainanID = Mcu_KelainanID
join mcu_kelainangroup on Mcu_KelainanMcu_KelainanGroupID = Mcu_KelainanGroupID
where T_KelainanFiskIsActive = 'Y' and T_OrderHeaderMgm_McuID = ? AND
Mcu_KelainanClasification NOT IN ('who','kemenkes','JNC-VIII','ESC/ESH')
group by Mcu_KelainanID
ORDER BY total DESC
LIMIT 3
`
if err := dbx.Handlex.Select(&data, q, id); err != nil {
return data, fmt.Errorf("error get data top 3 kelainan fisik %v", err)
}
return data, nil
}

View File

@@ -4,6 +4,7 @@ import (
"cpone/db"
"cpone/models"
dbx "cpone/package/database"
"encoding/json"
"fmt"
"math"
"strconv"
@@ -62,52 +63,6 @@ func (sp *PatientServices) GetDashboardPatientBreadcrumb(title string) (models.B
return breadcrumb, nil
}
func (sp *PatientServices) ListingData(search string, date string, patID string, corpId string, currentpage int, rowperpage int) ([]models.DashboardPatient, int, error) {
logger, _ := zap.NewProduction()
var ret []models.DashboardPatient
var totalData int
if len(date) == 0 {
date = ""
}
prmSearch := "%" + search + "%"
offset := (currentpage - 1) * rowperpage
q := `
SELECT COUNT(*)
FROM t_orderheader
WHERE T_OrderHeaderIsActive = 'Y'
AND T_OrderHeaderLabNumber LIKE ?
AND T_OrderHeaderM_PatientID = ?
`
if err := dbx.Handlex.Get(&totalData, q, prmSearch, patID); err != nil {
return nil, 0, fmt.Errorf("error query get total data: %v", err)
}
q = `
SELECT
T_OrderHeaderID,
DATE_FORMAT(T_OrderHeaderDate, '%d/%m/%Y') AS T_OrderHeaderDate,
T_OrderHeaderLabNumber,
T_OrderHeaderM_PatientID,
T_OrderHeaderCorporateID,
T_OrderHeaderMgm_McuID,
T_OrderHeaderIsActive
FROM t_orderheader
WHERE T_OrderHeaderIsActive = 'Y'
AND T_OrderHeaderLabNumber LIKE ?
AND T_OrderHeaderM_PatientID = ?
LIMIT ? OFFSET ?
`
if err := dbx.Handlex.Select(&ret, q, prmSearch, patID, rowperpage, offset); err != nil {
return nil, 0, fmt.Errorf("error query get data: %v", err)
}
logger.Info("response", zap.Any("data", ret))
totalPage := int(math.Ceil(float64(totalData) / float64(rowperpage)))
return ret, totalPage, nil
}
func (sp *PatientServices) GetListtingData(email string, currentpage int, rowperpage int) ([]models.DashboardPatient, int, error) {
logger, _ := zap.NewProduction()
var ret []models.DashboardPatient
@@ -150,72 +105,267 @@ func (sp *PatientServices) GetListtingData(email string, currentpage int, rowper
return ret, totalPage, nil
}
func (sp *PatientServices) GetReportMcu(orderheaderID string) ([]models.TabViewReportMcu, error) {
var ret []models.TabViewReportMcu
var data []models.ModelMcuPesertaReport
var totalData int
func (sp *PatientServices) GetListReportPesertaV3(orderheaderID string, staffname string) ([]models.TabViewReportMcu, error) {
var returnTab []models.TabViewReportMcu
var GroupResultOrder []models.GroupResultOrderModel
var SoResultData []models.SoResultEntryReportModel
q := `
SELECT COUNT(*)
FROM so_resultentry
WHERE So_ResultEntryT_OrderHeaderID = ?
AND So_ResultEntryIsActive = 'Y'
SELECT
gr.Group_ResultID,
gr.Group_ResultName,
gr.Group_ResultResumeMcu,
gr.Group_ResultUrl,
gr.Group_ResultIsOrderHeader,
gro.Group_ResultOrderOrder,
DATE_FORMAT(NOW(), '%y%m%d%H%i%s') AS Datetime
FROM t_orderdetail todtl
JOIN t_test tt ON todtl.T_OrderDetailT_TestID = tt.T_TestID
AND tt.T_TestIsActive = 'Y'
JOIN group_resultdetail grd ON tt.T_TestID = grd.Group_ResultDetailT_TestID
AND grd.Group_ResultDetailIsActive = 'Y'
JOIN group_result gr ON grd.Group_ResultDetailGroup_ResultID = gr.Group_ResultID
AND gr.Group_ResultIsActive = 'Y'
JOIN group_resultorder gro ON gro.Group_ResultOrderGroup_ResultID = gr.Group_ResultID
AND Group_ResultOrderIsActive = 'Y'
WHERE todtl.T_OrderDetailT_OrderHeaderID = ?
AND todtl.T_OrderDetailIsActive = 'Y'
GROUP BY gr.Group_ResultID
ORDER BY gro.Group_ResultOrderOrder
`
if err := dbx.Handlex.Get(&totalData, q, orderheaderID); err != nil {
return ret, fmt.Errorf("error get total mcu report: %v", err)
if err := dbx.Handlex.Select(&GroupResultOrder, q, orderheaderID); err != nil {
return returnTab, fmt.Errorf("error get group result order: %v", err)
}
q = `
SELECT
So_ResultEntryID,
So_ResultEntryT_OrderHeaderID,
So_ResultEntryNonlab_TemplateID,
So_ResultEntryNonlab_TemplateName
FROM so_resultentry
WHERE So_ResultEntryT_OrderHeaderID = ?
AND So_ResultEntryIsActive = 'Y'
ORDER BY So_ResultEntryNonlab_TemplateID
SELECT
sre.So_ResultEntryID,
sre.So_ResultEntryT_OrderHeaderID,
sre.So_ResultEntryT_OrderDetailID,
sre.So_ResultEntryNonlab_TemplateID,
sre.So_ResultEntryNonlab_TemplateName
FROM t_orderdetail tdet
JOIN t_test tt ON tdet.T_OrderDetailT_TestID = tt.T_TestID
AND tt.T_TestIsActive = 'Y'
JOIN so_resultentry sre ON sre.So_ResultEntryT_OrderDetailID = tdet.T_OrderDetailID
AND sre.So_ResultEntryIsActive = 'Y'
WHERE tdet.T_OrderDetailT_OrderHeaderID = ?
AND tdet.T_OrderDetailIsActive = 'Y'
`
if err := dbx.Handlex.Select(&data, q, orderheaderID); err != nil {
return ret, err
if err := dbx.Handlex.Select(&SoResultData, q, orderheaderID); err != nil {
return returnTab, fmt.Errorf("error get so result data non lab: %v", err)
}
// Lab
ret = append(ret, models.TabViewReportMcu{Name: "Hasil Laboratorium", Link: "https://devcpone.aplikasi.web.id/birt/run?__report=report/one/lab/rpt_test.rptdesign&__format=pdf&PID=" + orderheaderID + "&username=adhi&tm=1717726294764"})
// Non-lab
for _, n := range data {
var link models.TabViewReportMcu
switch n.So_ResultEntryNonlab_TemplateName {
mapSoResultData := map[string]int{}
for _, so := range SoResultData {
switch so.So_ResultEntryNonlab_TemplateName {
case "ECG":
link.Name = "Elektromedis"
link.Link = "https://devcpone.aplikasi.web.id/birt/run?__report=report/one/lab/rpt_hasil_so_elmd.rptdesign&__format=pdf&PID=" + strconv.Itoa(n.So_ResultEntryID) + "&username=adhi&tm=1717726294764"
mapSoResultData["Elektromedik"] = so.So_ResultEntryID
case "Thorax PA":
link.Name = "Radiologi"
link.Link = "https://devcpone.aplikasi.web.id/birt/run?__report=report/one/lab/rpt_hasil_so_xray.rptdesign&__format=pdf&PID=" + strconv.Itoa(n.So_ResultEntryID) + "&username=adhi&tm=1717726294764"
case "Audiometri":
link.Name = "Audiometri"
link.Link = "https://devcpone.aplikasi.web.id/birt/run?__report=report/one/lab/rpt_hasil_so_audiometri.rptdesign&__format=pdf&PID=" + strconv.Itoa(n.So_ResultEntryID) + "&username=adhi&tm=1717726294764"
case "Spirometri":
link.Name = "Spirometri"
link.Link = "https://devcpone.aplikasi.web.id/birt/run?__report=report/one/lab/rpt_hasil_so_spirometri.rptdesign&__format=pdf&PID=" + strconv.Itoa(n.So_ResultEntryID) + "&username=adhi&tm=1717726294764"
case "Fisik Umum":
namaFisik := []string{"Hasil Fisik", "Hasil Pajanan", "Riwayat"}
linkFisik := []string{
"https://devcpone.aplikasi.web.id/birt/run?__report=report/one/mcu/mcu_fisik.rptdesign&__format=pdf&PID=" + strconv.Itoa(n.So_ResultEntryID) + "&PType=fisik&username=adhi&tm=1717726294764",
"https://devcpone.aplikasi.web.id/birt/run?__report=report/one/mcu/mcu_pajanan.rptdesign&__format=pdf&PID=" + strconv.Itoa(n.So_ResultEntryID) + "&PType=fisik&username=adhi&tm=1717726294764",
"https://devcpone.aplikasi.web.id/birt/run?__report=report/one/mcu/mcu_riwayat.rptdesign&__format=pdf&PID=" + strconv.Itoa(n.So_ResultEntryID) + "&PType=riwayat&username=adhi&tm=1717726294764",
}
for i := 0; i < 3; i++ {
ret = append(ret, models.TabViewReportMcu{Name: namaFisik[i], Link: linkFisik[i]})
}
continue
mapSoResultData["Rontgen"] = so.So_ResultEntryID
case "Fisik Umum", "Fisik Umum K3":
mapSoResultData["FISIK"] = so.So_ResultEntryID
default:
mapSoResultData[so.So_ResultEntryNonlab_TemplateName] = so.So_ResultEntryID
}
}
for _, group := range GroupResultOrder {
var urlMap map[string]string
if err := json.Unmarshal([]byte(group.Group_ResultUrl), &urlMap); err != nil {
return returnTab, fmt.Errorf("error parsing json: %v", err)
}
ret = append(ret, link)
switch group.Group_ResultResumeMcu {
case "FISIK":
soResultID := strconv.Itoa(mapSoResultData["FISIK"])
if soResultID != "0" {
for key, value := range urlMap {
returnTab = append(returnTab, models.TabViewReportMcu{
Name: key,
Link: value + "&username=" + staffname + "&PID=" + soResultID + "&tm=" + group.Datetime,
})
}
}
case "NONLAB":
soResultID := strconv.Itoa(mapSoResultData[group.Group_ResultName])
if soResultID != "0" {
for _, value := range urlMap {
returnTab = append(returnTab, models.TabViewReportMcu{
Name: group.Group_ResultName,
Link: value + "&username=" + staffname + "&PID=" + soResultID + "&tm=" + group.Datetime,
})
}
}
case "LAB":
for _, value := range urlMap {
returnTab = append(returnTab, models.TabViewReportMcu{
Name: group.Group_ResultName,
Link: value + "&username=" + staffname + "&PID=" + orderheaderID + "&tm=" + group.Datetime,
})
}
default:
for _, value := range urlMap {
returnTab = append(returnTab, models.TabViewReportMcu{
Name: group.Group_ResultName,
Link: value + "&username=" + staffname + "&PID=" + orderheaderID + "&tm=" + group.Datetime,
})
}
}
}
ret = append(ret, models.TabViewReportMcu{Name: "Resume Individu", Link: "https://devcpone.aplikasi.web.id/birt/run?__report=report/one/mcu/rpt_mcu_resume.rptdesign&__format=pdf&PID=" + orderheaderID + "&username=adhi&tm=1717726294764"})
return ret, nil
return returnTab, nil
}
func (sp *PatientServices) GetListReportPesertaV4(orderheaderID string, staffname string) ([]models.TabViewReportMcu, error) {
var returnTab []models.TabViewReportMcu
var profile_patient models.PatientMCU
lab_rpt := ""
sql := `
SELECT
toh.T_OrderHeaderID,
toh.T_OrderHeaderLabNumber,
mp.M_PatientID,
mp.M_PatientName,
DATE_FORMAT(NOW(), '%y%m%d%H%i%s') AS Datetime
FROM t_orderheader toh
JOIN m_patient mp ON toh.T_OrderHeaderM_PatientID = mp.M_PatientID
AND mp.M_PatientIsActive = 'Y'
WHERE toh.T_OrderHeaderID = ? AND toh.T_OrderHeaderIsActive = 'Y'
`
if err := dbx.Handlex.Get(&profile_patient, sql, orderheaderID); err != nil {
return returnTab, fmt.Errorf("error get group result order: %v", err)
}
if profile_patient.T_OrderHeaderLabNumber != "" {
lab_rpt = "/birt/frameset?__report=report/one/lab/rpt_test_portal.rptdesign&__format=pdf&PID=" + profile_patient.T_OrderHeaderID + "&tm=" + profile_patient.Datetime + "&username=" + staffname
}
var so_data_rpt []models.SoRptData
fisik := ""
rontgen := ""
ekg := ""
audiometri := ""
spirometri := ""
treadmill := ""
papsmear := ""
sql_rpt := `
SELECT DISTINCT group_resultName as rpt_name,
IFNULL(So_ResultEntryID,0) as so_id,
T_OrderDetailT_OrderHeaderID as order_id,
DATE_FORMAT(NOW(), '%y%m%d%H%i%s') AS Datetime
FROM t_orderdetail
JOIN t_test ON T_OrderDetailT_TestID = T_TestID
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_TestID
JOIN group_result ON Group_ResultID = Group_ResultDetailGroup_ResultID AND
Group_ResultFlagPerTest = 'N' AND Group_ResultName <> 'LAB' AND Group_ResultFlagNonLab = 'N'
LEFT JOIN so_resultentry ON So_ResultEntryT_OrderDetailID = T_OrderDetailID AND So_ResultEntryIsActive = 'Y'
WHERE
T_OrderDetailT_OrderHeaderID = ? AND Group_ResultName <> 'Tanpa Hasil'
UNION
SELECT DISTINCT group_resultName as rpt_name,
IFNULL(So_ResultEntryID,0) as so_id,
T_OrderDetailT_OrderHeaderID as order_id,
DATE_FORMAT(NOW(), '%y%m%d%H%i%s') AS Datetime
FROM t_orderdetail
JOIN t_test ON T_OrderDetailT_TestID = T_TestID
JOIN t_samplingso ON T_SamplingSoT_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND
T_SamplingSoT_TestID = T_TestID
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_TestID
JOIN group_result ON Group_ResultID = Group_ResultDetailGroup_ResultID AND
Group_ResultFlagPerTest = 'N' AND Group_ResultName <> 'LAB' AND Group_ResultFlagNonLab = 'Y'
LEFT JOIN so_resultentry ON So_ResultEntryT_OrderDetailID = T_OrderDetailID AND So_ResultEntryIsActive = 'Y'
WHERE
T_OrderDetailT_OrderHeaderID = ? AND Group_ResultName <> 'Tanpa Hasil'
UNION
SELECT DISTINCT T_TestName as rpt_name,
IFNULL(So_ResultEntryID,0) as so_id,
T_OrderDetailT_OrderHeaderID as order_id,
DATE_FORMAT(NOW(), '%y%m%d%H%i%s') AS Datetime
FROM t_orderdetail
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestName NOT IN ('Visus Mata','Buta Warna','Pemeriksaan Lapang Pandang')
JOIN t_samplingso ON T_SamplingSoT_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND
T_SamplingSoT_TestID = T_TestID
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_TestID
JOIN group_result ON Group_ResultID = Group_ResultDetailGroup_ResultID AND
Group_ResultFlagPerTest = 'Y' AND Group_ResultFlagNonLab = 'Y'
LEFT JOIN so_resultentry ON So_ResultEntryT_OrderDetailID = T_OrderDetailID AND So_ResultEntryIsActive = 'Y'
WHERE
T_OrderDetailT_OrderHeaderID = ? AND Group_ResultName <> 'Tanpa Hasil'
`
if err := dbx.Handlex.Select(&so_data_rpt, sql_rpt, orderheaderID, orderheaderID, orderheaderID); err != nil {
return returnTab, fmt.Errorf("error get data so_id: %v", err)
}
for _, d := range so_data_rpt {
switch d.Rpt_name {
case "Pemeriksaan Fisik":
fisik = "/birt/frameset?__report=report/one/mcu/mcu_fisik_history_v2_portal.rptdesign&__format=pdf&PType=fisik&PLang=1&username=" + staffname + "&PID=" + d.So_id + "&tm=" + d.Datetime
case "Rontgen":
rontgen = "/birt/frameset?__report=report/one/lab/rpt_hasil_so_xray_portal.rptdesign&__format=pdf&username=" + staffname + "&PID=" + d.So_id + "&tm=" + d.Datetime
case "Audiometri":
audiometri = "/birt/frameset?__report=report/one/lab/rpt_hasil_so_audiometri_portal.rptdesign&__format=pdf&username=" + staffname + "&PID=" + d.So_id + "&tm=" + d.Datetime
case "Spirometri":
spirometri = "/birt/frameset?__report=report/one/lab/rpt_hasil_so_spirometri_portal.rptdesign&__format=pdf&username=" + staffname + "&PID=" + d.So_id + "&tm=" + d.Datetime
case "ECG":
ekg = "/birt/frameset?__report=report/one/lab/rpt_hasil_so_ecg_portal.rptdesign&__format=pdf&username=" + staffname + "&PID=" + d.So_id + "&tm=" + d.Datetime
case "Treadmill":
treadmill = "/birt/frameset?__report=report/one/lab/rpt_hasil_so_treadmill_portal.rptdesign&__format=pdf&username=" + staffname + "&PID=" + d.So_id + "&tm=" + d.Datetime
case "Papsmear":
papsmear = "/birt/frameset?__report=report/one/lab/rpt_test_papsmear_portal.rptdesign&__format=pdf&username=" + staffname + "&PID=" + d.So_id + "&tm=" + d.Datetime
}
}
var ResumeData models.ResumeMCU
kesimpulan := ""
// cover := ""
sql_resume := `
SELECT
Mcu_ResumeID,
DATE_FORMAT(NOW(), '%y%m%d%H%i%s') AS Datetime
FROM mcu_resume
WHERE Mcu_ResumeT_OrderHeaderID = ?
AND Mcu_ResumeIsActive = 'Y' AND Mcu_ResumeStatus = 'VAL'
`
if err := dbx.Handlex.Get(&ResumeData, sql_resume, orderheaderID); err != nil {
return returnTab, fmt.Errorf("error get data resume id: %v", err)
}
if ResumeData.Mcu_ResumeID != "" {
// cover = "/birt/frameset?__report=report/one/mcu/rpt_mcu_resume_cover_portal.rptdesign&__format=pdf&username=" + staffname + "&PID=" + ResumeData.Mcu_ResumeID + "&tm=" + ResumeData.Datetime
kesimpulan = "/birt/frameset?__report=report/one/mcu/rpt_mcu_saran_kesimpulan_v2_portal.rptdesign&__format=pdf&username=" + staffname + "&PID=" + ResumeData.Mcu_ResumeID + "&tm=" + ResumeData.Datetime
}
if fisik != "" {
returnTab = append(returnTab, models.TabViewReportMcu{Name: "Fisik", Link: fisik})
}
if rontgen != "" {
returnTab = append(returnTab, models.TabViewReportMcu{Name: "Rontgen", Link: rontgen})
}
if ekg != "" {
returnTab = append(returnTab, models.TabViewReportMcu{Name: "Elektromedik", Link: ekg})
}
if audiometri != "" {
returnTab = append(returnTab, models.TabViewReportMcu{Name: "Audiometri", Link: audiometri})
}
if spirometri != "" {
returnTab = append(returnTab, models.TabViewReportMcu{Name: "Spirometri", Link: spirometri})
}
if treadmill != "" {
returnTab = append(returnTab, models.TabViewReportMcu{Name: "Treadmill", Link: treadmill})
}
if kesimpulan != "" {
returnTab = append(returnTab, models.TabViewReportMcu{Name: "Kesimpulan", Link: kesimpulan})
}
if lab_rpt != "" {
returnTab = append(returnTab, models.TabViewReportMcu{Name: "Lab", Link: lab_rpt})
}
if papsmear != "" {
returnTab = append(returnTab, models.TabViewReportMcu{Name: "Papsmear", Link: papsmear})
}
return returnTab, nil
}

View File

@@ -1,11 +1,10 @@
package public_services
import (
"bytes"
"cpone/db"
"cpone/models"
"cpone/package/config"
"encoding/json"
"fmt"
"io"
"net/http"
"net/url"
@@ -24,53 +23,11 @@ func NewServicesLogin(uStore db.AppStore) *ServicesLogin {
}
}
func (ls *ServicesLogin) Login(username string, password string) (models.ResponseApi, error) {
logger, _ := zap.NewProduction()
url := "https://devcpone.aplikasi.web.id/one-api/v1/system/auth/login"
var resp models.ResponseApi
// Create a JSON payload with the username and password
payload := []byte(fmt.Sprintf(`{"username": "%s", "password": "%s"}`, username, password))
logger.Info("payload", zap.Any("data", payload))
// Make the POST request
request, err := http.Post(url, "application/json", bytes.NewBuffer(payload))
if err != nil {
logger.Info("requser", zap.Any("err", err))
return resp, err
}
if request.StatusCode != http.StatusOK {
logger.Info("status", zap.Any("err", request.StatusCode))
return resp, fmt.Errorf("server returned non-OK status: %d", request.StatusCode)
}
defer request.Body.Close()
// Read the response body
body, err := io.ReadAll(request.Body)
if err != nil {
logger.Info("body", zap.Any("data", body))
return resp, err
}
if err := json.Unmarshal(body, &resp); err != nil {
logger.Info("json", zap.Any("data", err))
return resp, err
}
// Check if status is "ERR"
if resp.Status == "ERR" {
logger.Info("status", zap.Any("data", resp.Message))
return resp, fmt.Errorf("login failed: %s", resp.Message)
}
return resp, nil
}
func (ls *ServicesLogin) MultiSignIn(username string, password string) (models.Response, error) {
func (ls *ServicesLogin) MultiSignIn(username string, password string, host string) (models.Response, error) {
logger, _ := zap.NewProduction()
var ret models.Response
uri := "https://devcpone.aplikasi.web.id/one-api/v1/system/auth/multi_login"
uri := "https://" + config.Data.Get("servername") + "/one-api/v1/system/auth/multi_login"
params := url.Values{}
params.Add("username", username)

View File

@@ -1,28 +0,0 @@
package utils
import (
"fmt"
"math"
)
// InterpolateColor calculates a color between two given colors based on progress (0 to 1)
func InterpolateColor(start, end string, progress float64) string {
r1, g1, b1 := HexToRGB(start)
r2, g2, b2 := HexToRGB(end)
r := int(math.Round(float64(r1)*(1-progress) + float64(r2)*progress))
g := int(math.Round(float64(g1)*(1-progress) + float64(g2)*progress))
b := int(math.Round(float64(b1)*(1-progress) + float64(b2)*progress))
return fmt.Sprintf("#%02x%02x%02x", r, g, b)
}
// Helper function to convert hex to RGB
func HexToRGB(hex string) (int, int, int) {
var r, g, b int
_, err := fmt.Sscanf(hex, "#%02x%02x%02x", &r, &g, &b)
if err != nil {
return 0, 0, 0
}
return r, g, b
}

View File

@@ -0,0 +1,20 @@
package utils
import (
"strings"
)
func SplitStrings(text string, count int) string {
words := strings.Split(text, " ")
var result strings.Builder
for i := 0; i < len(words); i += count {
if i+count < len(words) {
result.WriteString(strings.Join(words[i:i+count], " ") + "\n")
} else {
result.WriteString(strings.Join(words[i:], " "))
}
}
return result.String()
}

View File

@@ -11,7 +11,7 @@ templ FilterListing(
) {
<div class="row pt-8 align-items-center">
<div class="col-12 col-sm-3 col-md-1 col-lg-1 col-xl-1 mb-2">
<label class="text-black font-weight-bolder">Stard Date:</label>
<label class="text-black font-weight-bolder">Start Date:</label>
</div>
<div class="col-12 col-sm-9 col-md-2 col-lg-2 col-xl-2 mb-2">
<input
@@ -54,7 +54,7 @@ templ FilterListing(
name="search"
class="form-control form-control-lg bg-field border-0 rounded-lg"
type="text"
placeholder="nama karyawan"
placeholder="Nama MCU"
hx-get={ hxGet }
hx-trigger={ hxTrigger }
hx-include={ hxInclude }

View File

@@ -31,7 +31,7 @@ func FilterListing(
templ_7745c5c3_Var1 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div class=\"row pt-8 align-items-center\"><div class=\"col-12 col-sm-3 col-md-1 col-lg-1 col-xl-1 mb-2\"><label class=\"text-black font-weight-bolder\">Stard Date:</label></div><div class=\"col-12 col-sm-9 col-md-2 col-lg-2 col-xl-2 mb-2\">")
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div class=\"row pt-8 align-items-center\"><div class=\"col-12 col-sm-3 col-md-1 col-lg-1 col-xl-1 mb-2\"><label class=\"text-black font-weight-bolder\">Start Date:</label></div><div class=\"col-12 col-sm-9 col-md-2 col-lg-2 col-xl-2 mb-2\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
@@ -221,7 +221,7 @@ func FilterListing(
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<input id=\"searchID\" name=\"search\" class=\"form-control form-control-lg bg-field border-0 rounded-lg\" type=\"text\" placeholder=\"nama karyawan\" hx-get=\"")
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<input id=\"searchID\" name=\"search\" class=\"form-control form-control-lg bg-field border-0 rounded-lg\" type=\"text\" placeholder=\"Nama MCU\" hx-get=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}

View File

@@ -0,0 +1,158 @@
package corporate_mcudetail
import "cpone/models"
import "strconv"
templ McuDetailTabView(
McuID string,
McuTab []models.McuTabModels,
) {
<div>
<ul class="nav nav-tabs nav-tabs-line">
for i, d := range McuTab {
if i == 0 {
<li class="nav-item">
<a
class="nav-link active"
data-toggle="tab"
href={templ.URL("#mcu_tab_" + strconv.Itoa(i))}
>{ d.TabName }</a>
</li>
} else {
<li class="nav-item">
<a
class="nav-link"
data-toggle="tab"
href={templ.URL("#mcu_tab_" + strconv.Itoa(i))}
>{ d.TabName }</a>
</li>
}
}
<li class="nav-item">
<a
if len(McuTab) == 0 {
class="nav-link active"
} else {
class="nav-link"
}
data-toggle="tab"
href={templ.URL("#mcu_tab_" + strconv.Itoa(len(McuTab) + 1))}
>Kesimpulan</a>
</li>
<li class="nav-item">
<a
class="nav-link"
data-toggle="tab"
href={templ.URL("#mcu_tab_" + strconv.Itoa(len(McuTab) + 2))}
>Daftar Peserta</a>
</li>
<li class="nav-item">
<a
class="nav-link"
data-toggle="tab"
href={templ.URL("#mcu_tab_" + strconv.Itoa(len(McuTab) + 3))}
>Executive Summary</a>
</li>
<li class="nav-item">
<a
class="nav-link"
data-toggle="tab"
href={templ.URL("#mcu_tab_" + strconv.Itoa(len(McuTab) + 4))}
>Keuangan</a>
</li>
</ul>
</div>
<div class="tab-content mt-5" id="mcutabcontent">
for i, d := range McuTab {
if i == 0 {
<div
class="tab-pane fade show active" role="tabpanel"
id={"mcu_tab_" + strconv.Itoa(i)}
aria-labelledby={"mcu_tab_" + strconv.Itoa(i)}
hx-get={"/corp/dashboard_pic/detail/" + McuID +"/" + d.TabID}
hx-target={"#" + d.TabID}
hx-trigger="load"
hx-indicator={"." + d.TabID + d.Mcu_ImageGrafikGroupMenu}
>
<div id={d.TabID}></div>
<div style="display: flex; justify-content: center; align-items: center;">
<span class={"htmx-indicator spinner-border spinner-border-lg " + d.TabID + d.Mcu_ImageGrafikGroupMenu} role="status" aria-hidden="true"></span>
</div>
</div>
} else {
<div
class="tab-pane fade" role="tabpanel"
id={"mcu_tab_" + strconv.Itoa(i)}
aria-labelledby={"mcu_tab_" + strconv.Itoa(i)}
hx-get={"/corp/dashboard_pic/detail/" + McuID +"/" + d.TabID}
hx-target={"#" + d.TabID}
hx-trigger="load"
hx-indicator={"." + d.TabID + d.Mcu_ImageGrafikGroupMenu}
>
<div id={d.TabID}></div>
<div style="display: flex; justify-content: center; align-items: center;">
<span class={"htmx-indicator spinner-border spinner-border-lg " + d.TabID + d.Mcu_ImageGrafikGroupMenu} role="status" aria-hidden="true"></span>
</div>
</div>
}
}
<div
if len(McuTab) == 0 {
class="tab-pane fade show active"
} else {
class="tab-pane fade"
}
role="tabpanel"
id={"mcu_tab_" + strconv.Itoa(len(McuTab) + 1)}
aria-labelledby={"mcu_tab_" + strconv.Itoa(len(McuTab) + 1)}
hx-get={"/corp/dashboard_pic/detail/" + McuID +"/tabkesimpulan"}
hx-target="#tabkesimpulan"
hx-trigger="load"
hx-indicator=".kesimpulanloading"
>
<div id="tabkesimpulan"></div>
<div style="display: flex; justify-content: center; align-items: center;">
<span class="htmx-indicator spinner-border spinner-border-lg kesimpulanloading" role="status" aria-hidden="true"></span>
</div>
</div>
<div
class="tab-pane fade" role="tabpanel"
id={"mcu_tab_" + strconv.Itoa(len(McuTab) + 2)}
aria-labelledby={"mcu_tab_" + strconv.Itoa(len(McuTab) + 2)}
hx-get={"/corp/dashboard_pic/detail/" + McuID +"/tabdaftarpeserta"}
hx-target="#tabdaftarpeserta"
hx-trigger="load"
hx-indicator=".tabdaftarpesertaload"
>
<div id="tabdaftarpeserta"></div>
<div style="display: flex; justify-content: center; align-items: center;">
<span class="htmx-indicator spinner-border spinner-border-lg tabdaftarpesertaload" role="status" aria-hidden="true"></span>
</div>
</div>
<div
class="tab-pane fade" role="tabpanel"
id={"mcu_tab_" + strconv.Itoa(len(McuTab) + 3)}
aria-labelledby={"mcu_tab_" + strconv.Itoa(len(McuTab) + 3)}
style="height: 700px;"
>
<object
data={"/birt/run?__report=report/one/mcu/rpt_executive_summary_mcu_001.rptdesign&__format=pdf&PID="+McuID+"&username=admin&tm=1722914077866"}
type="application/pdf" width="100%" height="100%"
></object>
</div>
<div
class="tab-pane fade" role="tabpanel"
id={"mcu_tab_" + strconv.Itoa(len(McuTab) + 4)}
aria-labelledby={"mcu_tab_" + strconv.Itoa(len(McuTab) + 4)}
hx-get={"/corp/dashboard_pic/detail/" + McuID +"/tabkeuangan"}
hx-target="#tabkeuangan"
hx-trigger="load"
hx-indicator=".uangloading"
>
<div id="tabkeuangan"></div>
<div style="display: flex; justify-content: center; align-items: center;">
<span class="htmx-indicator spinner-border spinner-border-lg uangloading" role="status" aria-hidden="true"></span>
</div>
</div>
</div>
}

View File

@@ -29,7 +29,7 @@ templ DialogReport(
</div>
}
templ ModalBody(
templ ModalRptBody(
IDComponent string,
tabComponent templ.Component,
hxOnLoad templ.ComponentScript,
@@ -62,7 +62,7 @@ templ ModalClose(LinkClose string, hxTarget string, hxSwap string, modalID strin
templ TabReportView(
datamcu []models.TabViewReportMcu,
) {
<div>
<div class="container-rpt">
<ul class="nav nav-tabs nav-tabs-line">
for i, v := range datamcu {
if i == 0 {
@@ -90,35 +90,4 @@ templ TabReportView(
}
}
</div>
}
// <div>
// <ul class="nav nav-tabs nav-tabs-line">
// <li class="nav-item">
// <a class="nav-link active" data-toggle="tab" href="#kt_tab_pat_1">Hasil Lab</a>
// </li>
// <li class="nav-item">
// <a class="nav-link" data-toggle="tab" href="#kt_tab_pat_2">Hasil Non Lab</a>
// </li>
// <li class="nav-item">
// <a class="nav-link" data-toggle="tab" href="#kt_tab_pat_3">Hasil Fisik</a>
// </li>
// <li class="nav-item">
// <a class="nav-link" data-toggle="tab" href="#kt_tab_pat_4">Resume Individu</a>
// </li>
// </ul>
// </div>
// <div class="tab-content mt-5" id="patTabContent">
// <div class="tab-pane fade show active" id="kt_tab_pat_1" role="tabpanel" aria-labelledby="kt_tab_pat_1" style="height: 700px;">
// <object data={"https://devcpone.aplikasi.web.id/birt/run?__report=report/one/mcu/rpt_mcu_history.rptdesign&__format=pdf&PID=5&PPatientID=112&username=adhi&tm=1717726294764"} type="application/pdf" width="100%" height="100%"></object>
// </div>
// <div class="tab-pane fade" id="kt_tab_pat_2" role="tabpanel" aria-labelledby="kt_tab_pat_2" style="height: 700px;">
// <object data={"https://devcpone.aplikasi.web.id/birt/run?__report=report/one/mcu/mcu_pajanan.rptdesign&__format=pdf&PID=5&PType=fisik&username=adhi&tm=1717726294764"} type="application/pdf" width="100%" height="100%"></object>
// </div>
// <div class="tab-pane fade" id="kt_tab_pat_3" role="tabpanel" aria-labelledby="kt_tab_pat_3" style="height: 700px;">
// <object data={"https://devcpone.aplikasi.web.id/birt/run?__report=report/one/mcu/mcu_fisik.rptdesign&__format=pdf&PID=5&PType=fisik&username=adhi&tm=1717726294764"} type="application/pdf" width="100%" height="100%"></object>
// </div>
// <div class="tab-pane fade" id="kt_tab_pat_4" role="tabpanel" aria-labelledby="kt_tab_pat_4" style="height: 700px;">
// <object data={"https://devcpone.aplikasi.web.id/birt/run?__report=report/one/mcu/rpt_mcu_resume.rptdesign&__format=pdf&PID=1&username=adhi&tm=1717726294764"} type="application/pdf" width="100%" height="100%"></object>
// </div>
// </div>
}

View File

@@ -86,7 +86,7 @@ func DialogReport(
})
}
func ModalBody(
func ModalRptBody(
IDComponent string,
tabComponent templ.Component,
hxOnLoad templ.ComponentScript,
@@ -220,7 +220,7 @@ func TabReportView(
templ_7745c5c3_Var9 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div><ul class=\"nav nav-tabs nav-tabs-line\">")
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div class=\"container-rpt\"><ul class=\"nav nav-tabs nav-tabs-line\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
@@ -386,34 +386,3 @@ func TabReportView(
return templ_7745c5c3_Err
})
}
// <div>
// <ul class="nav nav-tabs nav-tabs-line">
// <li class="nav-item">
// <a class="nav-link active" data-toggle="tab" href="#kt_tab_pat_1">Hasil Lab</a>
// </li>
// <li class="nav-item">
// <a class="nav-link" data-toggle="tab" href="#kt_tab_pat_2">Hasil Non Lab</a>
// </li>
// <li class="nav-item">
// <a class="nav-link" data-toggle="tab" href="#kt_tab_pat_3">Hasil Fisik</a>
// </li>
// <li class="nav-item">
// <a class="nav-link" data-toggle="tab" href="#kt_tab_pat_4">Resume Individu</a>
// </li>
// </ul>
// </div>
// <div class="tab-content mt-5" id="patTabContent">
// <div class="tab-pane fade show active" id="kt_tab_pat_1" role="tabpanel" aria-labelledby="kt_tab_pat_1" style="height: 700px;">
// <object data={"https://devcpone.aplikasi.web.id/birt/run?__report=report/one/mcu/rpt_mcu_history.rptdesign&__format=pdf&PID=5&PPatientID=112&username=adhi&tm=1717726294764"} type="application/pdf" width="100%" height="100%"></object>
// </div>
// <div class="tab-pane fade" id="kt_tab_pat_2" role="tabpanel" aria-labelledby="kt_tab_pat_2" style="height: 700px;">
// <object data={"https://devcpone.aplikasi.web.id/birt/run?__report=report/one/mcu/mcu_pajanan.rptdesign&__format=pdf&PID=5&PType=fisik&username=adhi&tm=1717726294764"} type="application/pdf" width="100%" height="100%"></object>
// </div>
// <div class="tab-pane fade" id="kt_tab_pat_3" role="tabpanel" aria-labelledby="kt_tab_pat_3" style="height: 700px;">
// <object data={"https://devcpone.aplikasi.web.id/birt/run?__report=report/one/mcu/mcu_fisik.rptdesign&__format=pdf&PID=5&PType=fisik&username=adhi&tm=1717726294764"} type="application/pdf" width="100%" height="100%"></object>
// </div>
// <div class="tab-pane fade" id="kt_tab_pat_4" role="tabpanel" aria-labelledby="kt_tab_pat_4" style="height: 700px;">
// <object data={"https://devcpone.aplikasi.web.id/birt/run?__report=report/one/mcu/rpt_mcu_resume.rptdesign&__format=pdf&PID=1&username=adhi&tm=1717726294764"} type="application/pdf" width="100%" height="100%"></object>
// </div>
// </div>

View File

@@ -0,0 +1,117 @@
package corporate_mcudetail
import "cpone/component/modal"
import "cpone/models"
import "cpone/component/customtextfield"
templ DialogGeneratePass(
IDComponent string,
postLink string,
hxTarget string,
hxSwap string,
hxInclude string,
modalID string,
modalTitle string,
modalBody templ.Component,
modalClose templ.Component,
modalAction templ.Component,
) {
<div>
<form
id={ IDComponent }
class="form"
hx-post={ postLink }
hx-target={ hxTarget }
hx-swap={ hxSwap }
hx-include={ hxInclude }
hx-indicator=".formloading"
>
@modalcomponent.Modal(modalID,
modalTitle,
modalBody,
modalAction,
modalClose,
)
</form>
</div>
}
script HandleFormBeforeRequest() {
const btnCancel = document.querySelectorAll('.btncancel');
const btnSimpan = document.querySelectorAll('.btnsimpan');
for (let i = 0; i < btnCancel.length; i++) {
btnCancel[i].setAttribute('disabled', 'true');
}
for (let i = 0; i < btnSimpan.length; i++) {
btnSimpan[i].setAttribute('disabled', 'true');
}
}
script HandleFormAfterRequest() {
const btnCancel = document.querySelectorAll('.btncancel');
const btnSimpan = document.querySelectorAll('.btnsimpan');
for (let i = 0; i < btnCancel.length; i++) {
btnCancel[i].removeAttribute('disabled');
}
for (let i = 0; i < btnSimpan.length; i++) {
btnSimpan[i].removeAttribute('disabled');
}
}
templ ModalGenPassBody(
IDComponent string,
message string,
hxOnLoad templ.ComponentScript,
) {
<div id={ IDComponent } hx-on::load={ hxOnLoad }>
<p>{ message }</p>
</div>
}
templ ModalGenPassAction(LinkClose string, targetClose string, hxSwapClose string, modalID string) {
<div>
<button
type="button"
class="btn btn-outline-secondary font-weight-bolder rounded-lg mr-4 btncancel"
data-dismiss="modal"
hx-on::after-request={ JsHideModal(modalID) }
hx-post={ LinkClose }
hx-target={ targetClose }
hx-swap={ hxSwapClose }
hx-indicator=".cancelloading"
>
<span class="htmx-indicator spinner-border spinner-border-sm cancelloading" role="status" aria-hidden="true"></span>
Batal
</button>
<button
type="submit"
class="btn btn-primary btn-shadow font-weight-bold rounded-lg btnsimpan"
>
<span class="htmx-indicator spinner-border spinner-border-sm formloading" role="status" aria-hidden="true"></span>
Yakin
</button>
</div>
}
script JsGenPassReload(modalID string, link string) {
$(modalID).modal('hide');
htmx.ajax('POST', link, {target:'#contentlayout', swap:'outerHTML'});
}
templ ModalViewAkunBody(
IDComponent string,
akunID models.CustomTextFieldv2Prm,
akunEmail models.CustomTextFieldv2Prm,
newPass models.CustomTextFieldv2Prm,
newPassCek models.CustomTextFieldv2Prm,
hxOnLoad templ.ComponentScript,
) {
<div id={ IDComponent } hx-on::load={ hxOnLoad }>
@customtextfield.CustomTextFieldv2(akunID)
@customtextfield.CustomTextFieldv2(akunEmail)
@customtextfield.CustomTextFieldv2(newPass)
@customtextfield.CustomTextFieldv2(newPassCek)
</div>
}

View File

@@ -0,0 +1,399 @@
// Code generated by templ - DO NOT EDIT.
// templ: version: v0.2.663
package corporate_mcudetail
//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/modal"
import "cpone/models"
import "cpone/component/customtextfield"
func DialogGeneratePass(
IDComponent string,
postLink string,
hxTarget string,
hxSwap string,
hxInclude string,
modalID string,
modalTitle string,
modalBody templ.Component,
modalClose templ.Component,
modalAction 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("<div><form id=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var2 string
templ_7745c5c3_Var2, templ_7745c5c3_Err = templ.JoinStringErrs(IDComponent)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab\modalgeneratepass.templ`, Line: 21, Col: 28}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var2))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" class=\"form\" hx-post=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var3 string
templ_7745c5c3_Var3, templ_7745c5c3_Err = templ.JoinStringErrs(postLink)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab\modalgeneratepass.templ`, Line: 23, Col: 30}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var3))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" hx-target=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var4 string
templ_7745c5c3_Var4, templ_7745c5c3_Err = templ.JoinStringErrs(hxTarget)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab\modalgeneratepass.templ`, Line: 24, Col: 32}
}
_, 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("\" hx-swap=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var5 string
templ_7745c5c3_Var5, templ_7745c5c3_Err = templ.JoinStringErrs(hxSwap)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab\modalgeneratepass.templ`, Line: 25, Col: 28}
}
_, 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("\" hx-include=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var6 string
templ_7745c5c3_Var6, templ_7745c5c3_Err = templ.JoinStringErrs(hxInclude)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab\modalgeneratepass.templ`, Line: 26, Col: 34}
}
_, 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("\" hx-indicator=\".formloading\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = modalcomponent.Modal(modalID,
modalTitle,
modalBody,
modalAction,
modalClose,
).Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</form></div>")
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_21b5`,
Function: `function __templ_HandleFormBeforeRequest_21b5(){const btnCancel = document.querySelectorAll('.btncancel');
const btnSimpan = document.querySelectorAll('.btnsimpan');
for (let i = 0; i < btnCancel.length; i++) {
btnCancel[i].setAttribute('disabled', 'true');
}
for (let i = 0; i < btnSimpan.length; i++) {
btnSimpan[i].setAttribute('disabled', 'true');
}
}`,
Call: templ.SafeScript(`__templ_HandleFormBeforeRequest_21b5`),
CallInline: templ.SafeScriptInline(`__templ_HandleFormBeforeRequest_21b5`),
}
}
func HandleFormAfterRequest() templ.ComponentScript {
return templ.ComponentScript{
Name: `__templ_HandleFormAfterRequest_568b`,
Function: `function __templ_HandleFormAfterRequest_568b(){const btnCancel = document.querySelectorAll('.btncancel');
const btnSimpan = document.querySelectorAll('.btnsimpan');
for (let i = 0; i < btnCancel.length; i++) {
btnCancel[i].removeAttribute('disabled');
}
for (let i = 0; i < btnSimpan.length; i++) {
btnSimpan[i].removeAttribute('disabled');
}
}`,
Call: templ.SafeScript(`__templ_HandleFormAfterRequest_568b`),
CallInline: templ.SafeScriptInline(`__templ_HandleFormAfterRequest_568b`),
}
}
func ModalGenPassBody(
IDComponent string,
message 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_Var7 := templ.GetChildren(ctx)
if templ_7745c5c3_Var7 == nil {
templ_7745c5c3_Var7 = 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("<div id=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var8 string
templ_7745c5c3_Var8, templ_7745c5c3_Err = templ.JoinStringErrs(IDComponent)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab\modalgeneratepass.templ`, Line: 68, Col: 25}
}
_, 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("\" hx-on::load=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var9 templ.ComponentScript = hxOnLoad
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var9.Call)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\"><p>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var10 string
templ_7745c5c3_Var10, templ_7745c5c3_Err = templ.JoinStringErrs(message)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab\modalgeneratepass.templ`, Line: 69, Col: 20}
}
_, 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("</p></div>")
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 ModalGenPassAction(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_Var11 := templ.GetChildren(ctx)
if templ_7745c5c3_Var11 == nil {
templ_7745c5c3_Var11 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div>")
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("<button type=\"button\" class=\"btn btn-outline-secondary font-weight-bolder rounded-lg mr-4 btncancel\" data-dismiss=\"modal\" hx-on::after-request=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var12 templ.ComponentScript = JsHideModal(modalID)
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var12.Call)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" hx-post=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var13 string
templ_7745c5c3_Var13, templ_7745c5c3_Err = templ.JoinStringErrs(LinkClose)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab\modalgeneratepass.templ`, Line: 80, Col: 31}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var13))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" hx-target=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var14 string
templ_7745c5c3_Var14, templ_7745c5c3_Err = templ.JoinStringErrs(targetClose)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab\modalgeneratepass.templ`, Line: 81, Col: 35}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var14))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" hx-swap=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var15 string
templ_7745c5c3_Var15, templ_7745c5c3_Err = templ.JoinStringErrs(hxSwapClose)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab\modalgeneratepass.templ`, Line: 82, Col: 33}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var15))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" hx-indicator=\".cancelloading\"><span class=\"htmx-indicator spinner-border spinner-border-sm cancelloading\" role=\"status\" aria-hidden=\"true\"></span> Batal\r</button> <button type=\"submit\" class=\"btn btn-primary btn-shadow font-weight-bold rounded-lg btnsimpan\"><span class=\"htmx-indicator spinner-border spinner-border-sm formloading\" role=\"status\" aria-hidden=\"true\"></span> Yakin\r</button></div>")
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 JsGenPassReload(modalID string, link string) templ.ComponentScript {
return templ.ComponentScript{
Name: `__templ_JsGenPassReload_f5ca`,
Function: `function __templ_JsGenPassReload_f5ca(modalID, link){$(modalID).modal('hide');
htmx.ajax('POST', link, {target:'#contentlayout', swap:'outerHTML'});
}`,
Call: templ.SafeScript(`__templ_JsGenPassReload_f5ca`, modalID, link),
CallInline: templ.SafeScriptInline(`__templ_JsGenPassReload_f5ca`, modalID, link),
}
}
func ModalViewAkunBody(
IDComponent string,
akunID models.CustomTextFieldv2Prm,
akunEmail models.CustomTextFieldv2Prm,
newPass models.CustomTextFieldv2Prm,
newPassCek models.CustomTextFieldv2Prm,
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_Var16 := templ.GetChildren(ctx)
if templ_7745c5c3_Var16 == nil {
templ_7745c5c3_Var16 = 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("<div id=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var17 string
templ_7745c5c3_Var17, templ_7745c5c3_Err = templ.JoinStringErrs(IDComponent)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab\modalgeneratepass.templ`, Line: 111, Col: 25}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var17))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" hx-on::load=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var18 templ.ComponentScript = hxOnLoad
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var18.Call)
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(akunID).Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = customtextfield.CustomTextFieldv2(akunEmail).Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = customtextfield.CustomTextFieldv2(newPass).Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = customtextfield.CustomTextFieldv2(newPassCek).Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</div>")
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
})
}

View File

@@ -9,8 +9,17 @@ templ TabDaftarPesertaScreen(
paginationID string,
dialogReportID string,
dialogReportBodyID string,
dialogGenPassID string,
dialogGenPassBodyID string,
dialogAkunID string,
dialogAkunBodyID string,
dialogDetailID string,
dialogDetailBodyID string,
content templ.Component,
dialogReport templ.Component,
dialogGenPass templ.Component,
dialogViewAkun templ.Component,
dialogDetail templ.Component,
) {
<div class="container-fluid">
@customtextfield.CustomTextFieldv2(models.CustomTextFieldv2Prm{ID: "tableID",
@@ -29,12 +38,55 @@ templ TabDaftarPesertaScreen(
Name: "dialogReportBodyID",
Type: "hidden",
Value: dialogReportBodyID})
<div class="d-flex justify-content-center pt-10 pb-10">
<h2 class="title text-black" style="margin-bottom: 0">Daftar Peserta</h2>
@customtextfield.CustomTextFieldv2(models.CustomTextFieldv2Prm{ID: "dialogGenPassID",
Name: "dialogGenPassID",
Type: "hidden",
Value: dialogGenPassID})
@customtextfield.CustomTextFieldv2(models.CustomTextFieldv2Prm{ID: "dialogGenPassBodyID",
Name: "dialogGenPassBodyID",
Type: "hidden",
Value: dialogGenPassBodyID})
@customtextfield.CustomTextFieldv2(models.CustomTextFieldv2Prm{ID: "dialogAkunID",
Name: "dialogAkunID",
Type: "hidden",
Value: dialogAkunID})
@customtextfield.CustomTextFieldv2(models.CustomTextFieldv2Prm{ID: "dialogAkunBodyID",
Name: "dialogAkunBodyID",
Type: "hidden",
Value: dialogAkunBodyID})
@customtextfield.CustomTextFieldv2(models.CustomTextFieldv2Prm{ID: "dialogDetailID",
Name: "dialogDetailID",
Type: "hidden",
Value: dialogDetailID})
@customtextfield.CustomTextFieldv2(models.CustomTextFieldv2Prm{ID: "dialogDetailBodyID",
Name: "dialogDetailBodyID",
Type: "hidden",
Value: dialogDetailBodyID})
<div class="row align-items-center justify-content-center py-10">
<div class="col-md-2 col-sm-12 p-0">
</div>
<div class="col-md-8 col-sm-12 p-0">
<h2 class="title text-black" style="margin-bottom: 0; text-align: center;">Daftar Peserta</h2>
</div>
<div class="col-md-2 d-none d-lg-block d-xl-block d-md-block d-sm-none">
<div class="d-flex justify-content-end">
<button
type="button"
class="btn btn-primary"
data-toggle="modal"
data-target={"#" + dialogGenPassID}
>
Generate Password
</button>
</div>
</div>
</div>
<div id="loading-parent" class="rounded">
@content
@dialogReport
@dialogGenPass
@dialogViewAkun
@dialogDetail
<div id="loading-child" class="rounded bg-transparent">
<div id="loading-spinner" class="spinner-border text-primary d-none" style="width: 3rem; height: 3rem;" role="status">
<span class="sr-only">Loading...</span>
@@ -46,6 +98,13 @@ templ TabDaftarPesertaScreen(
}
templ CSSTabDaftarPeserta() {
<style>
.container-rpt {
width: 100%;
overflow-x: auto;
white-space: nowrap;
}
</style>
}
templ JsTabDaftarPeserta() {

View File

@@ -19,8 +19,17 @@ func TabDaftarPesertaScreen(
paginationID string,
dialogReportID string,
dialogReportBodyID string,
dialogGenPassID string,
dialogGenPassBodyID string,
dialogAkunID string,
dialogAkunBodyID string,
dialogDetailID string,
dialogDetailBodyID string,
content templ.Component,
dialogReport templ.Component,
dialogGenPass templ.Component,
dialogViewAkun templ.Component,
dialogDetail 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)
@@ -66,7 +75,62 @@ func TabDaftarPesertaScreen(
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div class=\"d-flex justify-content-center pt-10 pb-10\"><h2 class=\"title text-black\" style=\"margin-bottom: 0\">Daftar Peserta</h2></div><div id=\"loading-parent\" class=\"rounded\">")
templ_7745c5c3_Err = customtextfield.CustomTextFieldv2(models.CustomTextFieldv2Prm{ID: "dialogGenPassID",
Name: "dialogGenPassID",
Type: "hidden",
Value: dialogGenPassID}).Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = customtextfield.CustomTextFieldv2(models.CustomTextFieldv2Prm{ID: "dialogGenPassBodyID",
Name: "dialogGenPassBodyID",
Type: "hidden",
Value: dialogGenPassBodyID}).Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = customtextfield.CustomTextFieldv2(models.CustomTextFieldv2Prm{ID: "dialogAkunID",
Name: "dialogAkunID",
Type: "hidden",
Value: dialogAkunID}).Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = customtextfield.CustomTextFieldv2(models.CustomTextFieldv2Prm{ID: "dialogAkunBodyID",
Name: "dialogAkunBodyID",
Type: "hidden",
Value: dialogAkunBodyID}).Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = customtextfield.CustomTextFieldv2(models.CustomTextFieldv2Prm{ID: "dialogDetailID",
Name: "dialogDetailID",
Type: "hidden",
Value: dialogDetailID}).Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = customtextfield.CustomTextFieldv2(models.CustomTextFieldv2Prm{ID: "dialogDetailBodyID",
Name: "dialogDetailBodyID",
Type: "hidden",
Value: dialogDetailBodyID}).Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div class=\"row align-items-center justify-content-center py-10\"><div class=\"col-md-2 col-sm-12 p-0\"></div><div class=\"col-md-8 col-sm-12 p-0\"><h2 class=\"title text-black\" style=\"margin-bottom: 0; text-align: center;\">Daftar Peserta</h2></div><div class=\"col-md-2 d-none d-lg-block d-xl-block d-md-block d-sm-none\"><div class=\"d-flex justify-content-end\"><button type=\"button\" class=\"btn btn-primary\" data-toggle=\"modal\" data-target=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var2 string
templ_7745c5c3_Var2, templ_7745c5c3_Err = templ.JoinStringErrs("#" + dialogGenPassID)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab\tabdaftarpeserta.templ`, Line: 77, Col: 58}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var2))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\">Generate Password\r</button></div></div></div><div id=\"loading-parent\" class=\"rounded\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
@@ -78,6 +142,18 @@ func TabDaftarPesertaScreen(
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = dialogGenPass.Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = dialogViewAkun.Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = dialogDetail.Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div id=\"loading-child\" class=\"rounded bg-transparent\"><div id=\"loading-spinner\" class=\"spinner-border text-primary d-none\" style=\"width: 3rem; height: 3rem;\" role=\"status\"><span class=\"sr-only\">Loading...</span></div></div></div><div id=\"loadingcontent\"></div></div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
@@ -97,11 +173,15 @@ func CSSTabDaftarPeserta() 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_Var3 := templ.GetChildren(ctx)
if templ_7745c5c3_Var3 == nil {
templ_7745c5c3_Var3 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<style>\r\n .container-rpt {\r\n width: 100%;\r\n overflow-x: auto;\r\n white-space: nowrap;\r\n }\r\n </style>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if !templ_7745c5c3_IsBuffer {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W)
}
@@ -117,9 +197,9 @@ func JsTabDaftarPeserta() 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_Var4 := templ.GetChildren(ctx)
if templ_7745c5c3_Var4 == nil {
templ_7745c5c3_Var4 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
if !templ_7745c5c3_IsBuffer {
@@ -176,12 +256,12 @@ func ShowTabDafterPeserta(
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_Var5 := templ.GetChildren(ctx)
if templ_7745c5c3_Var5 == nil {
templ_7745c5c3_Var5 = 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_Var6 := 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()
@@ -196,7 +276,7 @@ func ShowTabDafterPeserta(
}
return templ_7745c5c3_Err
})
templ_7745c5c3_Err = layout.PlaygroundLayout(title, css, js).Render(templ.WithChildren(ctx, templ_7745c5c3_Var5), templ_7745c5c3_Buffer)
templ_7745c5c3_Err = layout.PlaygroundLayout(title, css, js).Render(templ.WithChildren(ctx, templ_7745c5c3_Var6), templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}

View File

@@ -3,11 +3,11 @@ package corporate_mcudetail
templ Tabkelainanfisik(
chartsxs []templ.Component,
chartsmd []templ.Component,
chartslg []templ.Component,
chartslg []templ.Component,
) {
<div class="container-fluid">
<div class="d-flex justify-content-center py-10">
<h2 class="title text-black" style="margin-bottom: 0;">Data Presentase Kelainan Fisik</h2>
<h2 class="title text-black" style="margin-bottom: 0;">Data Kelainan Fisik</h2>
</div>
// xs
@@ -28,7 +28,7 @@ templ Tabkelainanfisik(
<div class="col-12 my-4">
@ChartCard(c)
</div>
}
}
</div>
</div>
@@ -36,7 +36,7 @@ templ Tabkelainanfisik(
<div class="d-none d-lg-block">
<div class="row justify-content-center">
for _, c := range chartslg {
<div class="col-6 my-4">
<div class="m-4" style="width: 47%;">
@ChartCard(c)
</div>
}

View File

@@ -27,7 +27,7 @@ func Tabkelainanfisik(
templ_7745c5c3_Var1 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div class=\"container-fluid\"><div class=\"d-flex justify-content-center py-10\"><h2 class=\"title text-black\" style=\"margin-bottom: 0;\">Data Presentase Kelainan Fisik</h2></div><div class=\"d-xs-block d-sm-block d-md-none\"><div class=\"row justify-content-center\">")
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div class=\"container-fluid\"><div class=\"d-flex justify-content-center py-10\"><h2 class=\"title text-black\" style=\"margin-bottom: 0;\">Data Kelainan Fisik</h2></div><div class=\"d-xs-block d-sm-block d-md-none\"><div class=\"row justify-content-center\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
@@ -68,7 +68,7 @@ func Tabkelainanfisik(
return templ_7745c5c3_Err
}
for _, c := range chartslg {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div class=\"col-6 my-4\">")
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div class=\"m-4\" style=\"width: 47%;\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}

View File

@@ -36,7 +36,7 @@ templ TabKelainanGlobal(
<div class="d-none d-lg-block">
<div class="row justify-content-center">
for _, c := range chartslg {
<div class="col-12 my-4">
<div class="m-4" style="width: 100%;">
@ChartCard(c)
</div>
}

View File

@@ -68,7 +68,7 @@ func TabKelainanGlobal(
return templ_7745c5c3_Err
}
for _, c := range chartslg {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div class=\"col-12 my-4\">")
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div class=\"m-4\" style=\"width: 100%;\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}

View File

@@ -1,7 +1,6 @@
package corporate_mcudetail
templ TabKelainanLab(
chartpresentaselg templ.Component,
chartsxs []templ.Component,
chartsmd []templ.Component,
chartslg []templ.Component,
@@ -36,11 +35,17 @@ templ TabKelainanLab(
// lg
<div class="d-none d-lg-block">
<div class="row justify-content-center">
<div class="col-12 my-4">
@ChartCard(chartpresentaselg)
</div>
for _, c := range chartslg{
<div class="col-6 my-4">
for _, c := range chartslg {
// if i == 0 {
// <div class="col-12 my-4">
// @ChartCard(c)
// </div>
// } else {
// <div class="col-6 my-4">
// @ChartCard(c)
// </div>
// }
<div class="m-4" style="width: 47%;">
@ChartCard(c)
</div>
}

View File

@@ -11,7 +11,6 @@ import "io"
import "bytes"
func TabKelainanLab(
chartpresentaselg templ.Component,
chartsxs []templ.Component,
chartsmd []templ.Component,
chartslg []templ.Component,
@@ -64,20 +63,12 @@ func TabKelainanLab(
return templ_7745c5c3_Err
}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</div></div><div class=\"d-none d-lg-block\"><div class=\"row justify-content-center\"><div class=\"col-12 my-4\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = ChartCard(chartpresentaselg).Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</div>")
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</div></div><div class=\"d-none d-lg-block\"><div class=\"row justify-content-center\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
for _, c := range chartslg {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div class=\"col-6 my-4\">")
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(" <div class=\"m-4\" style=\"width: 47%;\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}

View File

@@ -1,8 +1,6 @@
package corporate_mcudetail
templ TabKelainanNonLab(
// chartpresentase templ.Component,
// chartthorax templ.Component,
chartsxs []templ.Component,
chartsmd []templ.Component,
chartslg []templ.Component,
@@ -37,22 +35,8 @@ templ TabKelainanNonLab(
// lg
<div class="d-none d-lg-block">
<div class="row justify-content-center">
// <div class="col-12 my-4">
// <div class="card shadow p-4" style="display: flex; justify-content: center; align-items: center; height: 100%;">
// <div class="d-flex flex-column pt-8">
// @chartpresentase
// </div>
// </div>
// </div>
// <div class="col-12 my-4">
// <div class="card shadow p-4" style="display: flex; justify-content: center; align-items: center; height: 100%;">
// <div class="d-flex flex-column pt-8">
// @chartthorax
// </div>
// </div>
// </div>
for _, c := range chartslg {
<div class="col-12 my-4">
<div class="m-4" style="width: 47%;">
@ChartCard(c)
</div>
}

View File

@@ -11,8 +11,6 @@ import "io"
import "bytes"
func TabKelainanNonLab(
// chartpresentase templ.Component,
// chartthorax templ.Component,
chartsxs []templ.Component,
chartsmd []templ.Component,
chartslg []templ.Component,
@@ -70,7 +68,7 @@ func TabKelainanNonLab(
return templ_7745c5c3_Err
}
for _, c := range chartslg {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div class=\"col-12 my-4\">")
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div class=\"m-4\" style=\"width: 47%;\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}

View File

@@ -36,7 +36,7 @@ templ TabKepesertaan(
<div class="d-none d-lg-block">
<div class="row justify-content-center">
for _, c := range chartslg {
<div class="col-6 my-4">
<div class="m-4" style="width: 47%;">
@ChartCard(c)
</div>
}
@@ -48,8 +48,8 @@ templ TabKepesertaan(
templ ChartCard(
charts templ.Component,
) {
<div class="card shadow p-4" style="display: flex; justify-content: center; align-items: center; height: 100%;">
<div class="d-flex flex-column pt-8">
<div class="card shadow p-4" style="display: flex; justify-content: center; align-items: center; height: 100%; width: 100%;">
<div class="d-flex flex-column pt-8" style="width: 100%;">
@charts
</div>
</div>

View File

@@ -68,7 +68,7 @@ func TabKepesertaan(
return templ_7745c5c3_Err
}
for _, c := range chartslg {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div class=\"col-6 my-4\">")
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div class=\"m-4\" style=\"width: 47%;\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
@@ -107,7 +107,7 @@ func ChartCard(
templ_7745c5c3_Var2 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div class=\"card shadow p-4\" style=\"display: flex; justify-content: center; align-items: center; height: 100%;\"><div class=\"d-flex flex-column pt-8\">")
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div class=\"card shadow p-4\" style=\"display: flex; justify-content: center; align-items: center; height: 100%; width: 100%;\"><div class=\"d-flex flex-column pt-8\" style=\"width: 100%;\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}

View File

@@ -16,9 +16,9 @@ templ MainKesimpulan(
Name: "tableID",
Type: "hidden",
Value: tableID})
<div class="d-flex justify-content-center pt-10 pb-10">
<h2 class="title text-black" style="margin-bottom: 0">Kesimpulan</h2>
</div>
<div class="d-flex justify-content-center py-10">
<h2 class="title text-black" style="margin-bottom: 0;">Kesimpulan</h2>
</div>
@tablecontent
@tablecontentnonlab
@tablecontentfisik

View File

@@ -44,7 +44,7 @@ func MainKesimpulan(
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div class=\"d-flex justify-content-center pt-10 pb-10\"><h2 class=\"title text-black\" style=\"margin-bottom: 0\">Kesimpulan</h2></div>")
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div class=\"d-flex justify-content-center py-10\"><h2 class=\"title text-black\" style=\"margin-bottom: 0;\">Kesimpulan</h2></div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}

View File

@@ -3,6 +3,7 @@ package corporate_mcudetail
import (
"cpone/component/table"
"cpone/models"
"strconv"
)
templ CardTableKesimpulan(title string, data []models.ModelKesimpulanLab, tableID string) {
@@ -36,9 +37,9 @@ templ RowKesimpulan(data []models.ModelKesimpulanLab) {
<td colspan="3" class="text-center">Data Tidak Ditemukan</td>
</tr>
}
for _, v := range data {
for idx, v := range data {
<tr>
<td>{ v.Nomor }</td>
<td>{ strconv.Itoa(idx + 1) }</td>
<td>{ v.Test }</td>
<td>{ v.Total }</td>
</tr>

View File

@@ -13,6 +13,7 @@ import "bytes"
import (
"cpone/component/table"
"cpone/models"
"strconv"
)
func CardTableKesimpulan(title string, data []models.ModelKesimpulanLab, tableID string) templ.Component {
@@ -35,7 +36,7 @@ func CardTableKesimpulan(title string, data []models.ModelKesimpulanLab, tableID
var templ_7745c5c3_Var2 string
templ_7745c5c3_Var2, templ_7745c5c3_Err = templ.JoinStringErrs(title)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab\tabkesimpulantable.templ`, Line: 12, Col: 11}
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab\tabkesimpulantable.templ`, Line: 13, Col: 11}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var2))
if templ_7745c5c3_Err != nil {
@@ -81,7 +82,7 @@ func TableKesimpulan(data []models.ModelKesimpulanLab,
var templ_7745c5c3_Var4 string
templ_7745c5c3_Var4, templ_7745c5c3_Err = templ.JoinStringErrs(tableID)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab\tabkesimpulantable.templ`, Line: 25, Col: 18}
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab\tabkesimpulantable.templ`, Line: 26, Col: 18}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var4))
if templ_7745c5c3_Err != nil {
@@ -128,15 +129,15 @@ func RowKesimpulan(data []models.ModelKesimpulanLab) templ.Component {
return templ_7745c5c3_Err
}
}
for _, v := range data {
for idx, v := range data {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<tr><td>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var6 string
templ_7745c5c3_Var6, templ_7745c5c3_Err = templ.JoinStringErrs(v.Nomor)
templ_7745c5c3_Var6, templ_7745c5c3_Err = templ.JoinStringErrs(strconv.Itoa(idx + 1))
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab\tabkesimpulantable.templ`, Line: 41, Col: 16}
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab\tabkesimpulantable.templ`, Line: 42, Col: 30}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var6))
if templ_7745c5c3_Err != nil {
@@ -149,7 +150,7 @@ func RowKesimpulan(data []models.ModelKesimpulanLab) templ.Component {
var templ_7745c5c3_Var7 string
templ_7745c5c3_Var7, templ_7745c5c3_Err = templ.JoinStringErrs(v.Test)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab\tabkesimpulantable.templ`, Line: 42, Col: 15}
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab\tabkesimpulantable.templ`, Line: 43, Col: 15}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var7))
if templ_7745c5c3_Err != nil {
@@ -162,7 +163,7 @@ func RowKesimpulan(data []models.ModelKesimpulanLab) templ.Component {
var templ_7745c5c3_Var8 string
templ_7745c5c3_Var8, templ_7745c5c3_Err = templ.JoinStringErrs(v.Total)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab\tabkesimpulantable.templ`, Line: 43, Col: 16}
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab\tabkesimpulantable.templ`, Line: 44, Col: 16}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var8))
if templ_7745c5c3_Err != nil {

View File

@@ -2,6 +2,7 @@ package corporate_mcudetail
import "cpone/component/table"
import "cpone/models"
import "strconv"
templ ContentLayout(
@@ -17,29 +18,53 @@ templ ContentLayout(
templ TableDaftarPeserta(
data []models.ModelMcuDaftarPeserta,
tableID string,
hxGet string,
hxTarget string,
hxInclude string,
hxSwap string,
hxGetRpt string,
hxTargetRpt string,
hxIncludeRpt string,
hxSwapRpt string,
hxGetAcc string,
hxTargetAcc string,
hxIncludeAcc string,
hxSwapAcc string,
hxGetDetail string,
hxTargetDetail string,
hxIncludeDetail string,
hxSwapDetail string,
) {
<div id={ tableID }>
@tablecomponent.TableV3([]string{"NOLAB", "NAMA", "JENIS KELAMIN", "UMUR", "KESIMPULAN", "AKSI"},
@tablecomponent.TableV3([]string{"NOMOR LAB", "NAMA", "JENIS KELAMIN", "UMUR", "NAMA PAKET", "AKSI"},
[]string{"15%","20%","10%","10%","30%","15%"},
ItemRow(data,
hxGet,
hxTarget,
hxInclude,
hxSwap,
hxGetRpt,
hxTargetRpt,
hxIncludeRpt,
hxSwapRpt,
hxGetAcc,
hxTargetAcc,
hxIncludeAcc,
hxSwapAcc,
hxGetDetail,
hxTargetDetail,
hxIncludeDetail,
hxSwapDetail,
))
</div>
}
templ ItemRow(
data []models.ModelMcuDaftarPeserta,
hxGet string,
hxTarget string,
hxInclude string,
hxSwap string,
hxGetRpt string,
hxTargetRpt string,
hxIncludeRpt string,
hxSwapRpt string,
hxGetAcc string,
hxTargetAcc string,
hxIncludeAcc string,
hxSwapAcc string,
hxGetDetail string,
hxTargetDetail string,
hxIncludeDetail string,
hxSwapDetail string,
) {
if len(data) == 0 {
<tr>
@@ -52,27 +77,21 @@ templ ItemRow(
<td>{ v.M_PatientName }</td>
<td>{ v.JenisKelamin }</td>
<td>{ v.Age }</td>
<td>{ v.List_Paket }</td>
<td>
// <div class="row align-items-center">
// <div class="col-2 col-xl-2 col-lg-2 col-md-12 col-sm-12">
// if v. == "Nanda Arisu" {
// <span class="label label-xl label-rounded label-light-warning" style="width: 50px;">Unfit</span>
// } else {
// <span class="label label-xl label-rounded label-light-success" style="width: 50px;">Fit</span>
// }
// </div>
// <div class="col-10 col-xl-10 col-lg-10 col-md-12 col-sm-12">
// Lorem Ipsum In Dolor Ad Sasum Mara Naka Adhum In Horem
// </div>
// </div>
-
</td>
<td>
@ItemAction(v.T_OrderHeaderID,
hxGet,
hxTarget,
hxInclude,
hxSwap,
@ItemAction(v,
hxGetRpt,
hxTargetRpt,
hxIncludeRpt,
hxSwapRpt,
hxGetAcc,
hxTargetAcc,
hxIncludeAcc,
hxSwapAcc,
hxGetDetail,
hxTargetDetail,
hxIncludeDetail,
hxSwapDetail,
)
</td>
</tr>
@@ -80,32 +99,95 @@ templ ItemRow(
}
templ ItemAction(
id string,
hxGet string,
hxTarget string,
hxInclude string,
hxSwap string,
data models.ModelMcuDaftarPeserta,
hxGetRpt string,
hxTargetRpt string,
hxIncludeRpt string,
hxSwapRpt string,
hxGetAcc string,
hxTargetAcc string,
hxIncludeAcc string,
hxSwapAcc string,
hxGetDetail string,
hxTargetDetail string,
hxIncludeDetail string,
hxSwapDetail string,
) {
<div class="row px-5 d-flex justify-content-around">
<a
type="button"
class="btn btn-icon"
hx-get={ hxGet +"?idx=" + id }
hx-target={ hxTarget }
hx-swap={ hxSwap }
hx-include={ hxInclude }
title="Detail test dan paket"
hx-get={ hxGetDetail +"?idx=" + data.T_OrderHeaderID }
hx-target={ hxTargetDetail }
hx-swap={ hxSwapDetail }
hx-include={ hxIncludeDetail }
>
<i class="flaticon-doc"></i>
<i class="flaticon2-list-1"></i>
</a>
// <a
// class="btn btn-icon"
// >
// <i class="flaticon2-edit"></i>
// </a>
// <a
// class="btn btn-icon"
// >
// <i class="la la-shield icon-xl"></i>
// </a>
<a
type="button"
class="btn btn-icon"
hx-get={ hxGetRpt +"?idx=" + data.T_OrderHeaderID }
hx-target={ hxTargetRpt }
hx-swap={ hxSwapRpt }
hx-include={ hxIncludeRpt }
title="Laporan MCU"
>
<i class="flaticon2-file"></i>
</a>
if data.AuthPatientEmail != "none" {
<a
type="button"
class="btn btn-icon"
hx-get={ hxGetAcc + "?patid=" + data.M_PatientID }
hx-target={ hxTargetAcc }
hx-swap={ hxSwapAcc }
hx-include={ hxIncludeAcc }
title="Ganti password peserta"
>
<i class="flaticon2-edit"></i>
</a>
} else {
<a
type="button"
class="btn btn-icon d-none"
hx-get={ hxGetAcc + "?patid=" + data.M_PatientID }
hx-target={ hxTargetAcc }
hx-swap={ hxSwapAcc }
hx-include={ hxIncludeAcc }
>
<i class="flaticon2-edit"></i>
</a>
}
</div>
}
templ TableDetailMCU(
data []models.TableTestPaket,
) {
<div id="table-detail-mcu" style="max-height: 700px; overflow-y: auto;">
@tablecomponent.TableV3([]string{"NOMOR", "NAMA TEST", "NAMA PAKET"},
[]string{"20%","40%","40%"},
DetailRow(data),
)
</div>
}
templ DetailRow(
data []models.TableTestPaket,
) {
if len(data) == 0 {
<tr>
<td colspan="3" class="text-center">Data Tidak Ditemukan</td>
</tr>
}
for _, v := range data {
<tr>
<td>{ strconv.Itoa(v.Nomor) }</td>
<td>{ v.NamaTest }</td>
<td>{ v.NamaPaket }</td>
</tr>
}
}

View File

@@ -12,6 +12,7 @@ import "bytes"
import "cpone/component/table"
import "cpone/models"
import "strconv"
func ContentLayout(
tablecomponent templ.Component,
@@ -68,10 +69,18 @@ func ContentLayout(
func TableDaftarPeserta(
data []models.ModelMcuDaftarPeserta,
tableID string,
hxGet string,
hxTarget string,
hxInclude string,
hxSwap string,
hxGetRpt string,
hxTargetRpt string,
hxIncludeRpt string,
hxSwapRpt string,
hxGetAcc string,
hxTargetAcc string,
hxIncludeAcc string,
hxSwapAcc string,
hxGetDetail string,
hxTargetDetail string,
hxIncludeDetail string,
hxSwapDetail 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)
@@ -92,7 +101,7 @@ func TableDaftarPeserta(
var templ_7745c5c3_Var4 string
templ_7745c5c3_Var4, templ_7745c5c3_Err = templ.JoinStringErrs(tableID)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab\tabledaftarpeserta.templ`, Line: 25, Col: 21}
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab\tabledaftarpeserta.templ`, Line: 34, Col: 21}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var4))
if templ_7745c5c3_Err != nil {
@@ -102,13 +111,21 @@ func TableDaftarPeserta(
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = tablecomponent.TableV3([]string{"NOLAB", "NAMA", "JENIS KELAMIN", "UMUR", "KESIMPULAN", "AKSI"},
templ_7745c5c3_Err = tablecomponent.TableV3([]string{"NOMOR LAB", "NAMA", "JENIS KELAMIN", "UMUR", "NAMA PAKET", "AKSI"},
[]string{"15%", "20%", "10%", "10%", "30%", "15%"},
ItemRow(data,
hxGet,
hxTarget,
hxInclude,
hxSwap,
hxGetRpt,
hxTargetRpt,
hxIncludeRpt,
hxSwapRpt,
hxGetAcc,
hxTargetAcc,
hxIncludeAcc,
hxSwapAcc,
hxGetDetail,
hxTargetDetail,
hxIncludeDetail,
hxSwapDetail,
)).Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
@@ -126,10 +143,18 @@ func TableDaftarPeserta(
func ItemRow(
data []models.ModelMcuDaftarPeserta,
hxGet string,
hxTarget string,
hxInclude string,
hxSwap string,
hxGetRpt string,
hxTargetRpt string,
hxIncludeRpt string,
hxSwapRpt string,
hxGetAcc string,
hxTargetAcc string,
hxIncludeAcc string,
hxSwapAcc string,
hxGetDetail string,
hxTargetDetail string,
hxIncludeDetail string,
hxSwapDetail 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)
@@ -157,7 +182,7 @@ func ItemRow(
var templ_7745c5c3_Var6 string
templ_7745c5c3_Var6, templ_7745c5c3_Err = templ.JoinStringErrs(v.T_OrderHeaderLabNumber)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab\tabledaftarpeserta.templ`, Line: 51, Col: 42}
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab\tabledaftarpeserta.templ`, Line: 76, Col: 42}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var6))
if templ_7745c5c3_Err != nil {
@@ -170,7 +195,7 @@ func ItemRow(
var templ_7745c5c3_Var7 string
templ_7745c5c3_Var7, templ_7745c5c3_Err = templ.JoinStringErrs(v.M_PatientName)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab\tabledaftarpeserta.templ`, Line: 52, Col: 33}
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab\tabledaftarpeserta.templ`, Line: 77, Col: 33}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var7))
if templ_7745c5c3_Err != nil {
@@ -183,7 +208,7 @@ func ItemRow(
var templ_7745c5c3_Var8 string
templ_7745c5c3_Var8, templ_7745c5c3_Err = templ.JoinStringErrs(v.JenisKelamin)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab\tabledaftarpeserta.templ`, Line: 53, Col: 32}
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab\tabledaftarpeserta.templ`, Line: 78, Col: 32}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var8))
if templ_7745c5c3_Err != nil {
@@ -196,21 +221,42 @@ func ItemRow(
var templ_7745c5c3_Var9 string
templ_7745c5c3_Var9, templ_7745c5c3_Err = templ.JoinStringErrs(v.Age)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab\tabledaftarpeserta.templ`, Line: 54, Col: 23}
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab\tabledaftarpeserta.templ`, Line: 79, Col: 23}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var9))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</td><td>-\r</td><td>")
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</td><td>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = ItemAction(v.T_OrderHeaderID,
hxGet,
hxTarget,
hxInclude,
hxSwap,
var templ_7745c5c3_Var10 string
templ_7745c5c3_Var10, templ_7745c5c3_Err = templ.JoinStringErrs(v.List_Paket)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab\tabledaftarpeserta.templ`, Line: 80, Col: 30}
}
_, 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("</td><td>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = ItemAction(v,
hxGetRpt,
hxTargetRpt,
hxIncludeRpt,
hxSwapRpt,
hxGetAcc,
hxTargetAcc,
hxIncludeAcc,
hxSwapAcc,
hxGetDetail,
hxTargetDetail,
hxIncludeDetail,
hxSwapDetail,
).Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
@@ -228,11 +274,19 @@ func ItemRow(
}
func ItemAction(
id string,
hxGet string,
hxTarget string,
hxInclude string,
hxSwap string,
data models.ModelMcuDaftarPeserta,
hxGetRpt string,
hxTargetRpt string,
hxIncludeRpt string,
hxSwapRpt string,
hxGetAcc string,
hxTargetAcc string,
hxIncludeAcc string,
hxSwapAcc string,
hxGetDetail string,
hxTargetDetail string,
hxIncludeDetail string,
hxSwapDetail 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)
@@ -241,21 +295,21 @@ func ItemAction(
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Var10 := templ.GetChildren(ctx)
if templ_7745c5c3_Var10 == nil {
templ_7745c5c3_Var10 = templ.NopComponent
templ_7745c5c3_Var11 := templ.GetChildren(ctx)
if templ_7745c5c3_Var11 == nil {
templ_7745c5c3_Var11 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div class=\"row px-5 d-flex justify-content-around\"><a type=\"button\" class=\"btn btn-icon\" hx-get=\"")
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div class=\"row px-5 d-flex justify-content-around\"><a type=\"button\" class=\"btn btn-icon\" title=\"Detail test dan paket\" hx-get=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var11 string
templ_7745c5c3_Var11, templ_7745c5c3_Err = templ.JoinStringErrs(hxGet + "?idx=" + id)
var templ_7745c5c3_Var12 string
templ_7745c5c3_Var12, templ_7745c5c3_Err = templ.JoinStringErrs(hxGetDetail + "?idx=" + data.T_OrderHeaderID)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab\tabledaftarpeserta.templ`, Line: 93, Col: 40}
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab\tabledaftarpeserta.templ`, Line: 121, Col: 64}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var11))
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var12))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
@@ -263,12 +317,12 @@ func ItemAction(
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var12 string
templ_7745c5c3_Var12, templ_7745c5c3_Err = templ.JoinStringErrs(hxTarget)
var templ_7745c5c3_Var13 string
templ_7745c5c3_Var13, templ_7745c5c3_Err = templ.JoinStringErrs(hxTargetDetail)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab\tabledaftarpeserta.templ`, Line: 94, Col: 32}
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab\tabledaftarpeserta.templ`, Line: 122, Col: 38}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var12))
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var13))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
@@ -276,12 +330,12 @@ func ItemAction(
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var13 string
templ_7745c5c3_Var13, templ_7745c5c3_Err = templ.JoinStringErrs(hxSwap)
var templ_7745c5c3_Var14 string
templ_7745c5c3_Var14, templ_7745c5c3_Err = templ.JoinStringErrs(hxSwapDetail)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab\tabledaftarpeserta.templ`, Line: 95, Col: 28}
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab\tabledaftarpeserta.templ`, Line: 123, Col: 34}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var13))
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var14))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
@@ -289,16 +343,187 @@ func ItemAction(
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var14 string
templ_7745c5c3_Var14, templ_7745c5c3_Err = templ.JoinStringErrs(hxInclude)
var templ_7745c5c3_Var15 string
templ_7745c5c3_Var15, templ_7745c5c3_Err = templ.JoinStringErrs(hxIncludeDetail)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab\tabledaftarpeserta.templ`, Line: 96, Col: 34}
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab\tabledaftarpeserta.templ`, Line: 124, Col: 40}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var14))
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var15))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\"><i class=\"flaticon-doc\"></i></a></div>")
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\"><i class=\"flaticon2-list-1\"></i></a> <a type=\"button\" class=\"btn btn-icon\" hx-get=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var16 string
templ_7745c5c3_Var16, templ_7745c5c3_Err = templ.JoinStringErrs(hxGetRpt + "?idx=" + data.T_OrderHeaderID)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab\tabledaftarpeserta.templ`, Line: 131, Col: 61}
}
_, 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("\" hx-target=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var17 string
templ_7745c5c3_Var17, templ_7745c5c3_Err = templ.JoinStringErrs(hxTargetRpt)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab\tabledaftarpeserta.templ`, Line: 132, Col: 35}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var17))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" hx-swap=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var18 string
templ_7745c5c3_Var18, templ_7745c5c3_Err = templ.JoinStringErrs(hxSwapRpt)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab\tabledaftarpeserta.templ`, Line: 133, Col: 31}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var18))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" hx-include=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var19 string
templ_7745c5c3_Var19, templ_7745c5c3_Err = templ.JoinStringErrs(hxIncludeRpt)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab\tabledaftarpeserta.templ`, Line: 134, Col: 37}
}
_, 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("\" title=\"Laporan MCU\"><i class=\"flaticon2-file\"></i></a> ")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if data.AuthPatientEmail != "none" {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<a type=\"button\" class=\"btn btn-icon\" hx-get=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var20 string
templ_7745c5c3_Var20, templ_7745c5c3_Err = templ.JoinStringErrs(hxGetAcc + "?patid=" + data.M_PatientID)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab\tabledaftarpeserta.templ`, Line: 143, Col: 64}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var20))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" hx-target=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var21 string
templ_7745c5c3_Var21, templ_7745c5c3_Err = templ.JoinStringErrs(hxTargetAcc)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab\tabledaftarpeserta.templ`, Line: 144, Col: 39}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var21))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" hx-swap=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var22 string
templ_7745c5c3_Var22, templ_7745c5c3_Err = templ.JoinStringErrs(hxSwapAcc)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab\tabledaftarpeserta.templ`, Line: 145, Col: 35}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var22))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" hx-include=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var23 string
templ_7745c5c3_Var23, templ_7745c5c3_Err = templ.JoinStringErrs(hxIncludeAcc)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab\tabledaftarpeserta.templ`, Line: 146, Col: 41}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var23))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" title=\"Ganti password peserta\"><i class=\"flaticon2-edit\"></i></a>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
} else {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<a type=\"button\" class=\"btn btn-icon d-none\" hx-get=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var24 string
templ_7745c5c3_Var24, templ_7745c5c3_Err = templ.JoinStringErrs(hxGetAcc + "?patid=" + data.M_PatientID)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab\tabledaftarpeserta.templ`, Line: 155, Col: 64}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var24))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" hx-target=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var25 string
templ_7745c5c3_Var25, templ_7745c5c3_Err = templ.JoinStringErrs(hxTargetAcc)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab\tabledaftarpeserta.templ`, Line: 156, Col: 39}
}
_, 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("\" hx-swap=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var26 string
templ_7745c5c3_Var26, templ_7745c5c3_Err = templ.JoinStringErrs(hxSwapAcc)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab\tabledaftarpeserta.templ`, Line: 157, Col: 35}
}
_, 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("\" hx-include=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var27 string
templ_7745c5c3_Var27, templ_7745c5c3_Err = templ.JoinStringErrs(hxIncludeAcc)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab\tabledaftarpeserta.templ`, Line: 158, Col: 41}
}
_, 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("\"><i class=\"flaticon2-edit\"></i></a>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
@@ -308,3 +533,113 @@ func ItemAction(
return templ_7745c5c3_Err
})
}
func TableDetailMCU(
data []models.TableTestPaket,
) 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("<div id=\"table-detail-mcu\" style=\"max-height: 700px; overflow-y: auto;\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = tablecomponent.TableV3([]string{"NOMOR", "NAMA TEST", "NAMA PAKET"},
[]string{"20%", "40%", "40%"},
DetailRow(data),
).Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</div>")
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 DetailRow(
data []models.TableTestPaket,
) 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_Var29 := templ.GetChildren(ctx)
if templ_7745c5c3_Var29 == nil {
templ_7745c5c3_Var29 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
if len(data) == 0 {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<tr><td colspan=\"3\" class=\"text-center\">Data Tidak Ditemukan</td></tr>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
}
for _, v := range data {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<tr><td>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var30 string
templ_7745c5c3_Var30, templ_7745c5c3_Err = templ.JoinStringErrs(strconv.Itoa(v.Nomor))
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab\tabledaftarpeserta.templ`, Line: 188, Col: 39}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var30))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</td><td>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var31 string
templ_7745c5c3_Var31, templ_7745c5c3_Err = templ.JoinStringErrs(v.NamaTest)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab\tabledaftarpeserta.templ`, Line: 189, Col: 28}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var31))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</td><td>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var32 string
templ_7745c5c3_Var32, templ_7745c5c3_Err = templ.JoinStringErrs(v.NamaPaket)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab\tabledaftarpeserta.templ`, Line: 190, Col: 29}
}
_, 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("</td></tr>")
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
})
}

View File

@@ -0,0 +1,541 @@
// Code generated by templ - DO NOT EDIT.
// templ: version: v0.2.663
package corporate_mcudetail
//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 "strconv"
func McuDetailTabView(
McuID string,
McuTab []models.McuTabModels,
) 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("<div><ul class=\"nav nav-tabs nav-tabs-line\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
for i, d := range McuTab {
if i == 0 {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<li class=\"nav-item\"><a class=\"nav-link active\" data-toggle=\"tab\" href=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var2 templ.SafeURL = templ.URL("#mcu_tab_" + strconv.Itoa(i))
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(string(templ_7745c5c3_Var2)))
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_Var3 string
templ_7745c5c3_Var3, templ_7745c5c3_Err = templ.JoinStringErrs(d.TabName)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab.templ`, Line: 19, Col: 36}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var3))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</a></li>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
} else {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<li class=\"nav-item\"><a class=\"nav-link\" data-toggle=\"tab\" href=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var4 templ.SafeURL = templ.URL("#mcu_tab_" + strconv.Itoa(i))
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(string(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(d.TabName)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab.templ`, Line: 27, Col: 36}
}
_, 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("</a></li>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<li class=\"nav-item\"><a")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if len(McuTab) == 0 {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(" class=\"nav-link active\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
} else {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(" class=\"nav-link\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(" data-toggle=\"tab\" href=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var6 templ.SafeURL = templ.URL("#mcu_tab_" + strconv.Itoa(len(McuTab)+1))
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(string(templ_7745c5c3_Var6)))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\">Kesimpulan</a></li><li class=\"nav-item\"><a class=\"nav-link\" data-toggle=\"tab\" href=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var7 templ.SafeURL = templ.URL("#mcu_tab_" + strconv.Itoa(len(McuTab)+2))
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(string(templ_7745c5c3_Var7)))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\">Daftar Peserta</a></li><li class=\"nav-item\"><a class=\"nav-link\" data-toggle=\"tab\" href=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var8 templ.SafeURL = templ.URL("#mcu_tab_" + strconv.Itoa(len(McuTab)+3))
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(string(templ_7745c5c3_Var8)))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\">Executive Summary</a></li><li class=\"nav-item\"><a class=\"nav-link\" data-toggle=\"tab\" href=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var9 templ.SafeURL = templ.URL("#mcu_tab_" + strconv.Itoa(len(McuTab)+4))
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(string(templ_7745c5c3_Var9)))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\">Keuangan</a></li></ul></div><div class=\"tab-content mt-5\" id=\"mcutabcontent\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
for i, d := range McuTab {
if i == 0 {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div class=\"tab-pane fade show active\" role=\"tabpanel\" id=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var10 string
templ_7745c5c3_Var10, templ_7745c5c3_Err = templ.JoinStringErrs("mcu_tab_" + strconv.Itoa(i))
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab.templ`, Line: 70, Col: 52}
}
_, 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("\" aria-labelledby=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var11 string
templ_7745c5c3_Var11, templ_7745c5c3_Err = templ.JoinStringErrs("mcu_tab_" + strconv.Itoa(i))
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab.templ`, Line: 71, Col: 65}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var11))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" hx-get=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var12 string
templ_7745c5c3_Var12, templ_7745c5c3_Err = templ.JoinStringErrs("/corp/dashboard_pic/detail/" + McuID + "/" + d.TabID)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab.templ`, Line: 72, Col: 80}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var12))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" hx-target=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var13 string
templ_7745c5c3_Var13, templ_7745c5c3_Err = templ.JoinStringErrs("#" + d.TabID)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab.templ`, Line: 73, Col: 44}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var13))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" hx-trigger=\"load\" hx-indicator=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var14 string
templ_7745c5c3_Var14, templ_7745c5c3_Err = templ.JoinStringErrs("." + d.TabID + d.Mcu_ImageGrafikGroupMenu)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab.templ`, Line: 75, Col: 76}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var14))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\"><div id=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var15 string
templ_7745c5c3_Var15, templ_7745c5c3_Err = templ.JoinStringErrs(d.TabID)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab.templ`, Line: 77, Col: 36}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var15))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\"></div><div style=\"display: flex; justify-content: center; align-items: center;\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var16 = []any{"htmx-indicator spinner-border spinner-border-lg " + d.TabID + d.Mcu_ImageGrafikGroupMenu}
templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var16...)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<span class=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var17 string
templ_7745c5c3_Var17, templ_7745c5c3_Err = templ.JoinStringErrs(templ.CSSClasses(templ_7745c5c3_Var16).String())
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab.templ`, Line: 1, Col: 0}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var17))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" role=\"status\" aria-hidden=\"true\"></span></div></div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
} else {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div class=\"tab-pane fade\" role=\"tabpanel\" id=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var18 string
templ_7745c5c3_Var18, templ_7745c5c3_Err = templ.JoinStringErrs("mcu_tab_" + strconv.Itoa(i))
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab.templ`, Line: 85, Col: 52}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var18))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" aria-labelledby=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var19 string
templ_7745c5c3_Var19, templ_7745c5c3_Err = templ.JoinStringErrs("mcu_tab_" + strconv.Itoa(i))
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab.templ`, Line: 86, Col: 65}
}
_, 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-get=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var20 string
templ_7745c5c3_Var20, templ_7745c5c3_Err = templ.JoinStringErrs("/corp/dashboard_pic/detail/" + McuID + "/" + d.TabID)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab.templ`, Line: 87, Col: 80}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var20))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" hx-target=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var21 string
templ_7745c5c3_Var21, templ_7745c5c3_Err = templ.JoinStringErrs("#" + d.TabID)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab.templ`, Line: 88, Col: 44}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var21))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" hx-trigger=\"load\" hx-indicator=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var22 string
templ_7745c5c3_Var22, templ_7745c5c3_Err = templ.JoinStringErrs("." + d.TabID + d.Mcu_ImageGrafikGroupMenu)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab.templ`, Line: 90, Col: 76}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var22))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\"><div id=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var23 string
templ_7745c5c3_Var23, templ_7745c5c3_Err = templ.JoinStringErrs(d.TabID)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab.templ`, Line: 92, Col: 36}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var23))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\"></div><div style=\"display: flex; justify-content: center; align-items: center;\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var24 = []any{"htmx-indicator spinner-border spinner-border-lg " + d.TabID + d.Mcu_ImageGrafikGroupMenu}
templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var24...)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<span class=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var25 string
templ_7745c5c3_Var25, templ_7745c5c3_Err = templ.JoinStringErrs(templ.CSSClasses(templ_7745c5c3_Var24).String())
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab.templ`, Line: 1, Col: 0}
}
_, 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("\" role=\"status\" aria-hidden=\"true\"></span></div></div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if len(McuTab) == 0 {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(" class=\"tab-pane fade show active\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
} else {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(" class=\"tab-pane fade\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(" role=\"tabpanel\" id=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var26 string
templ_7745c5c3_Var26, templ_7745c5c3_Err = templ.JoinStringErrs("mcu_tab_" + strconv.Itoa(len(McuTab)+1))
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab.templ`, Line: 106, Col: 58}
}
_, 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("\" aria-labelledby=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var27 string
templ_7745c5c3_Var27, templ_7745c5c3_Err = templ.JoinStringErrs("mcu_tab_" + strconv.Itoa(len(McuTab)+1))
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab.templ`, Line: 107, Col: 71}
}
_, 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("\" hx-get=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var28 string
templ_7745c5c3_Var28, templ_7745c5c3_Err = templ.JoinStringErrs("/corp/dashboard_pic/detail/" + McuID + "/tabkesimpulan")
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab.templ`, Line: 108, Col: 75}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var28))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" hx-target=\"#tabkesimpulan\" hx-trigger=\"load\" hx-indicator=\".kesimpulanloading\"><div id=\"tabkesimpulan\"></div><div style=\"display: flex; justify-content: center; align-items: center;\"><span class=\"htmx-indicator spinner-border spinner-border-lg kesimpulanloading\" role=\"status\" aria-hidden=\"true\"></span></div></div><div class=\"tab-pane fade\" role=\"tabpanel\" id=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var29 string
templ_7745c5c3_Var29, templ_7745c5c3_Err = templ.JoinStringErrs("mcu_tab_" + strconv.Itoa(len(McuTab)+2))
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab.templ`, Line: 120, Col: 58}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var29))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" aria-labelledby=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var30 string
templ_7745c5c3_Var30, templ_7745c5c3_Err = templ.JoinStringErrs("mcu_tab_" + strconv.Itoa(len(McuTab)+2))
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab.templ`, Line: 121, Col: 71}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var30))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" hx-get=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var31 string
templ_7745c5c3_Var31, templ_7745c5c3_Err = templ.JoinStringErrs("/corp/dashboard_pic/detail/" + McuID + "/tabdaftarpeserta")
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab.templ`, Line: 122, Col: 78}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var31))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" hx-target=\"#tabdaftarpeserta\" hx-trigger=\"load\" hx-indicator=\".tabdaftarpesertaload\"><div id=\"tabdaftarpeserta\"></div><div style=\"display: flex; justify-content: center; align-items: center;\"><span class=\"htmx-indicator spinner-border spinner-border-lg tabdaftarpesertaload\" role=\"status\" aria-hidden=\"true\"></span></div></div><div class=\"tab-pane fade\" role=\"tabpanel\" id=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var32 string
templ_7745c5c3_Var32, templ_7745c5c3_Err = templ.JoinStringErrs("mcu_tab_" + strconv.Itoa(len(McuTab)+3))
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab.templ`, Line: 134, Col: 58}
}
_, 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("\" aria-labelledby=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var33 string
templ_7745c5c3_Var33, templ_7745c5c3_Err = templ.JoinStringErrs("mcu_tab_" + strconv.Itoa(len(McuTab)+3))
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab.templ`, Line: 135, Col: 71}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var33))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" style=\"height: 700px;\"><object data=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var34 string
templ_7745c5c3_Var34, templ_7745c5c3_Err = templ.JoinStringErrs("/birt/run?__report=report/one/mcu/rpt_executive_summary_mcu_001.rptdesign&__format=pdf&PID=" + McuID + "&username=admin&tm=1722914077866")
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab.templ`, Line: 139, Col: 156}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var34))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" type=\"application/pdf\" width=\"100%\" height=\"100%\"></object></div><div class=\"tab-pane fade\" role=\"tabpanel\" id=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var35 string
templ_7745c5c3_Var35, templ_7745c5c3_Err = templ.JoinStringErrs("mcu_tab_" + strconv.Itoa(len(McuTab)+4))
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab.templ`, Line: 145, Col: 58}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var35))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" aria-labelledby=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var36 string
templ_7745c5c3_Var36, templ_7745c5c3_Err = templ.JoinStringErrs("mcu_tab_" + strconv.Itoa(len(McuTab)+4))
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab.templ`, Line: 146, Col: 71}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var36))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" hx-get=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var37 string
templ_7745c5c3_Var37, templ_7745c5c3_Err = templ.JoinStringErrs("/corp/dashboard_pic/detail/" + McuID + "/tabkeuangan")
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab.templ`, Line: 147, Col: 73}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var37))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" hx-target=\"#tabkeuangan\" hx-trigger=\"load\" hx-indicator=\".uangloading\"><div id=\"tabkeuangan\"></div><div style=\"display: flex; justify-content: center; align-items: center;\"><span class=\"htmx-indicator spinner-border spinner-border-lg uangloading\" role=\"status\" aria-hidden=\"true\"></span></div></div></div>")
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
})
}

View File

@@ -6,66 +6,85 @@ templ TabViewMcuDetail(
<div>
<ul class="nav nav-tabs nav-tabs-line">
<li class="nav-item">
<a class="nav-link active" data-toggle="tab" href="#kt_tab_pane_1" hx-get={"/corp/dashboard_pic/detail/" + id +"/tabkepesertaan"} hx-target="#tabkepesertaan" hx-trigger="load">Peserta</a>
<a class="nav-link active" data-toggle="tab" href="#kt_tab_pane_1" hx-get={"/corp/dashboard_pic/detail/" + id +"/tabkepesertaan"} hx-target="#tabkepesertaan" hx-trigger="load" hx-indicator=".kepesertaanloading">Peserta</a>
</li>
<li class="nav-item">
<a class="nav-link" data-toggle="tab" href="#kt_tab_pane_2" hx-get={"/corp/dashboard_pic/detail/" + id +"/tabkelainanglobal"} hx-target="#tabkelainanglobal" hx-trigger="click">Kelainan global</a>
<a class="nav-link" data-toggle="tab" href="#kt_tab_pane_2" hx-get={"/corp/dashboard_pic/detail/" + id +"/tabkelainanglobal"} hx-target="#tabkelainanglobal" hx-trigger="load" hx-indicator=".globalloading">Kelainan global</a>
</li>
<li class="nav-item">
<a class="nav-link" data-toggle="tab" href="#kt_tab_pane_3" hx-get={"/corp/dashboard_pic/detail/" + id +"/tabkelainanlab"} hx-target="#tabkelainanlab" hx-trigger="click">Kelainan Lab</a>
<a class="nav-link" data-toggle="tab" href="#kt_tab_pane_3" hx-get={"/corp/dashboard_pic/detail/" + id +"/tabkelainanlab"} hx-target="#tabkelainanlab" hx-trigger="load" hx-indicator=".labloading">Kelainan Lab</a>
</li>
<li class="nav-item">
<a class="nav-link" data-toggle="tab" href="#kt_tab_pane_4" hx-get={"/corp/dashboard_pic/detail/" + id +"/tabkelainannonlab"} hx-target="#tabkelainannonlab" hx-trigger="click">kelainan Non Lab</a>
<a class="nav-link" data-toggle="tab" href="#kt_tab_pane_4" hx-get={"/corp/dashboard_pic/detail/" + id +"/tabkelainannonlab"} hx-target="#tabkelainannonlab" hx-trigger="load" hx-indicator=".nonlabloading">kelainan Non Lab</a>
</li>
<li class="nav-item">
<a class="nav-link" data-toggle="tab" href="#kt_tab_pane_5" hx-get={"/corp/dashboard_pic/detail/" + id +"/tabkelainanfisik"} hx-target="#tabkelainanfisik" hx-trigger="click">kelainan Fisik</a>
<a class="nav-link" data-toggle="tab" href="#kt_tab_pane_5" hx-get={"/corp/dashboard_pic/detail/" + id +"/tabkelainanfisik"} hx-target="#tabkelainanfisik" hx-trigger="load" hx-indicator=".fisikloading">kelainan Fisik</a>
</li>
<li class="nav-item">
<a class="nav-link" data-toggle="tab" href="#kt_tab_pane_6" hx-get={"/corp/dashboard_pic/detail/" + id +"/tabkesimpulan"} hx-target="#tabkesimpulan">Kesimpulan</a>
<a class="nav-link" data-toggle="tab" href="#kt_tab_pane_6" hx-get={"/corp/dashboard_pic/detail/" + id +"/tabkesimpulan"} hx-target="#tabkesimpulan" hx-indicator=".kesimpulanloading">Kesimpulan</a>
</li>
<li class="nav-item">
<a class="nav-link" data-toggle="tab" href="#kt_tab_pane_7" hx-get={"/corp/dashboard_pic/detail/" + id +"/tabdaftarpeserta"} hx-target="#tabdaftarpeserta">Daftar Peserta</a>
<a class="nav-link" data-toggle="tab" href="#kt_tab_pane_7" hx-get={"/corp/dashboard_pic/detail/" + id +"/tabdaftarpeserta"} hx-target="#tabdaftarpeserta" hx-indicator=".daftperloading">Daftar Peserta</a>
</li>
<li class="nav-item">
<a class="nav-link" data-toggle="tab" href="#kt_tab_pane_8">Executive Summary</a>
</li>
<li class="nav-item">
<a class="nav-link" data-toggle="tab" href="#kt_tab_pane_9" hx-get={"/corp/dashboard_pic/detail/" + id +"/tabkeuangan"} hx-target="#tabkeuangan">Keuangan</a>
<a class="nav-link" data-toggle="tab" href="#kt_tab_pane_9" hx-get={"/corp/dashboard_pic/detail/" + id +"/tabkeuangan"} hx-target="#tabkeuangan" hx-indicator=".uangloading">Keuangan</a>
</li>
</ul>
</div>
<div class="tab-content mt-5" id="myTabContent">
<div class="tab-pane fade show active" id="kt_tab_pane_1" role="tabpanel" aria-labelledby="kt_tab_pane_1">
// <object data={"https://devcpone.aplikasi.web.id/birt/run?__report=report/one/mcu/rpt_mcu_graph_001.rptdesign&__format=pdf&PID="+id+"&username=adhi&tm=1717726294764"} type="application/pdf" width="100%" height="100%"></object>
<div id="tabkepesertaan"></div>
<div style="display: flex; justify-content: center; align-items: center;">
<span class="htmx-indicator spinner-border spinner-border-lg kepesertaanloading" role="status" aria-hidden="true"></span>
</div>
</div>
<div class="tab-pane fade" id="kt_tab_pane_2" role="tabpanel" aria-labelledby="kt_tab_pane_2">
// <object data={"https://devcpone.aplikasi.web.id/birt/run?__report=report/one/mcu/rpt_mcu_graph_002.rptdesign&__format=pdf&PID="+id+"&username=adhi&tm=1717726294764"} type="application/pdf" width="100%" height="100%"></object>
<div id="tabkelainanglobal"></div>
<div style="display: flex; justify-content: center; align-items: center;">
<span class="htmx-indicator spinner-border spinner-border-lg globalloading" role="status" aria-hidden="true"></span>
</div>
</div>
<div class="tab-pane fade" id="kt_tab_pane_3" role="tabpanel" aria-labelledby="kt_tab_pane_3">
// <object data={"https://devcpone.aplikasi.web.id/birt/run?__report=report/one/mcu/rpt_mcu_graph_003.rptdesign&__format=pdf&PID="+id+"&username=adhi&tm=1717726294764"} type="application/pdf" width="100%" height="100%"></object>
<div id="tabkelainanlab"></div>
<div style="display: flex; justify-content: center; align-items: center;">
<span class="htmx-indicator spinner-border spinner-border-lg labloading" role="status" aria-hidden="true"></span>
</div>
</div>
<div class="tab-pane fade" id="kt_tab_pane_4" role="tabpanel" aria-labelledby="kt_tab_pane_4" style="height: 800px;">
// <object data={"https://devcpone.aplikasi.web.id/birt/run?__report=report/one/mcu/rpt_mcu_graph_004.rptdesign&__format=pdf&PID="+id+"&username=adhi&tm=1717726294764"} type="application/pdf" width="100%" height="100%"></object>
<div id="tabkelainannonlab"></div>
<div style="display: flex; justify-content: center; align-items: center;">
<span class="htmx-indicator spinner-border spinner-border-lg nonlabloading" role="status" aria-hidden="true"></span>
</div>
</div>
<div class="tab-pane fade" id="kt_tab_pane_5" role="tabpanel" aria-labelledby="kt_tab_pane_5">
// <object data={"https://devcpone.aplikasi.web.id/birt/run?__report=report/one/mcu/rpt_mcu_graph_005.rptdesign&__format=pdf&PID="+id+"&username=adhi&tm=1717726294764"} type="application/pdf" width="100%" height="100%"></object>
<div id="tabkelainanfisik"></div>
<div style="display: flex; justify-content: center; align-items: center;">
<span class="htmx-indicator spinner-border spinner-border-lg fisikloading" role="status" aria-hidden="true"></span>
</div>
</div>
<div class="tab-pane fade" id="kt_tab_pane_6" role="tabpanel" aria-labelledby="kt_tab_pane_6">
<div id="tabkesimpulan"></div>
<div style="display: flex; justify-content: center; align-items: center;">
<span class="htmx-indicator spinner-border spinner-border-lg kesimpulanloading" role="status" aria-hidden="true"></span>
</div>
</div>
<div class="tab-pane fade" id="kt_tab_pane_7" role="tabpanel" aria-labelledby="kt_tab_pane_7">
<div id="tabdaftarpeserta"></div>
<div style="display: flex; justify-content: center; align-items: center;">
<span class="htmx-indicator spinner-border spinner-border-lg daftperloading" role="status" aria-hidden="true"></span>
</div>
</div>
<div class="tab-pane fade" id="kt_tab_pane_8" role="tabpanel" aria-labelledby="kt_tab_pane_8" style="height: 800px;">
<object data={"https://devcpone.aplikasi.web.id/birt/run?__report=report/one/mcu/rpt_summary_executive.rptdesign&__format=pdf&PID="+id+"&username=adhi&tm=1717726294764"} type="application/pdf" width="100%" height="100%"></object>
<object data={"/birt/run?__report=report/one/mcu/rpt_executive_summary_mcu_001.rptdesign&__format=pdf&PID="+id+"&username=admin&tm=1722914077866"} type="application/pdf" width="100%" height="100%"></object>
</div>
<div class="tab-pane fade" id="kt_tab_pane_9" role="tabpanel" aria-labelledby="kt_tab_pane_9">
<div id="tabkeuangan"></div>
<div style="display: flex; justify-content: center; align-items: center;">
<span class="htmx-indicator spinner-border spinner-border-lg uangloading" role="status" aria-hidden="true"></span>
</div>
</div>
</div>
}

View File

@@ -38,7 +38,7 @@ func TabViewMcuDetail(
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" hx-target=\"#tabkepesertaan\" hx-trigger=\"load\">Peserta</a></li><li class=\"nav-item\"><a class=\"nav-link\" data-toggle=\"tab\" href=\"#kt_tab_pane_2\" hx-get=\"")
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" hx-target=\"#tabkepesertaan\" hx-trigger=\"load\" hx-indicator=\".kepesertaanloading\">Peserta</a></li><li class=\"nav-item\"><a class=\"nav-link\" data-toggle=\"tab\" href=\"#kt_tab_pane_2\" hx-get=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
@@ -51,7 +51,7 @@ func TabViewMcuDetail(
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" hx-target=\"#tabkelainanglobal\" hx-trigger=\"click\">Kelainan global</a></li><li class=\"nav-item\"><a class=\"nav-link\" data-toggle=\"tab\" href=\"#kt_tab_pane_3\" hx-get=\"")
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" hx-target=\"#tabkelainanglobal\" hx-trigger=\"load\" hx-indicator=\".globalloading\">Kelainan global</a></li><li class=\"nav-item\"><a class=\"nav-link\" data-toggle=\"tab\" href=\"#kt_tab_pane_3\" hx-get=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
@@ -64,7 +64,7 @@ func TabViewMcuDetail(
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" hx-target=\"#tabkelainanlab\" hx-trigger=\"click\">Kelainan Lab</a></li><li class=\"nav-item\"><a class=\"nav-link\" data-toggle=\"tab\" href=\"#kt_tab_pane_4\" hx-get=\"")
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" hx-target=\"#tabkelainanlab\" hx-trigger=\"load\" hx-indicator=\".labloading\">Kelainan Lab</a></li><li class=\"nav-item\"><a class=\"nav-link\" data-toggle=\"tab\" href=\"#kt_tab_pane_4\" hx-get=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
@@ -77,7 +77,7 @@ func TabViewMcuDetail(
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" hx-target=\"#tabkelainannonlab\" hx-trigger=\"click\">kelainan Non Lab</a></li><li class=\"nav-item\"><a class=\"nav-link\" data-toggle=\"tab\" href=\"#kt_tab_pane_5\" hx-get=\"")
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" hx-target=\"#tabkelainannonlab\" hx-trigger=\"load\" hx-indicator=\".nonlabloading\">kelainan Non Lab</a></li><li class=\"nav-item\"><a class=\"nav-link\" data-toggle=\"tab\" href=\"#kt_tab_pane_5\" hx-get=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
@@ -90,7 +90,7 @@ func TabViewMcuDetail(
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" hx-target=\"#tabkelainanfisik\" hx-trigger=\"click\">kelainan Fisik</a></li><li class=\"nav-item\"><a class=\"nav-link\" data-toggle=\"tab\" href=\"#kt_tab_pane_6\" hx-get=\"")
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" hx-target=\"#tabkelainanfisik\" hx-trigger=\"load\" hx-indicator=\".fisikloading\">kelainan Fisik</a></li><li class=\"nav-item\"><a class=\"nav-link\" data-toggle=\"tab\" href=\"#kt_tab_pane_6\" hx-get=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
@@ -103,7 +103,7 @@ func TabViewMcuDetail(
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" hx-target=\"#tabkesimpulan\">Kesimpulan</a></li><li class=\"nav-item\"><a class=\"nav-link\" data-toggle=\"tab\" href=\"#kt_tab_pane_7\" hx-get=\"")
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" hx-target=\"#tabkesimpulan\" hx-indicator=\".kesimpulanloading\">Kesimpulan</a></li><li class=\"nav-item\"><a class=\"nav-link\" data-toggle=\"tab\" href=\"#kt_tab_pane_7\" hx-get=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
@@ -116,7 +116,7 @@ func TabViewMcuDetail(
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" hx-target=\"#tabdaftarpeserta\">Daftar Peserta</a></li><li class=\"nav-item\"><a class=\"nav-link\" data-toggle=\"tab\" href=\"#kt_tab_pane_8\">Executive Summary</a></li><li class=\"nav-item\"><a class=\"nav-link\" data-toggle=\"tab\" href=\"#kt_tab_pane_9\" hx-get=\"")
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" hx-target=\"#tabdaftarpeserta\" hx-indicator=\".daftperloading\">Daftar Peserta</a></li><li class=\"nav-item\"><a class=\"nav-link\" data-toggle=\"tab\" href=\"#kt_tab_pane_8\">Executive Summary</a></li><li class=\"nav-item\"><a class=\"nav-link\" data-toggle=\"tab\" href=\"#kt_tab_pane_9\" hx-get=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
@@ -129,20 +129,20 @@ func TabViewMcuDetail(
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" hx-target=\"#tabkeuangan\">Keuangan</a></li></ul></div><div class=\"tab-content mt-5\" id=\"myTabContent\"><div class=\"tab-pane fade show active\" id=\"kt_tab_pane_1\" role=\"tabpanel\" aria-labelledby=\"kt_tab_pane_1\"><div id=\"tabkepesertaan\"></div></div><div class=\"tab-pane fade\" id=\"kt_tab_pane_2\" role=\"tabpanel\" aria-labelledby=\"kt_tab_pane_2\"><div id=\"tabkelainanglobal\"></div></div><div class=\"tab-pane fade\" id=\"kt_tab_pane_3\" role=\"tabpanel\" aria-labelledby=\"kt_tab_pane_3\"><div id=\"tabkelainanlab\"></div></div><div class=\"tab-pane fade\" id=\"kt_tab_pane_4\" role=\"tabpanel\" aria-labelledby=\"kt_tab_pane_4\" style=\"height: 800px;\"><div id=\"tabkelainannonlab\"></div></div><div class=\"tab-pane fade\" id=\"kt_tab_pane_5\" role=\"tabpanel\" aria-labelledby=\"kt_tab_pane_5\"><div id=\"tabkelainanfisik\"></div></div><div class=\"tab-pane fade\" id=\"kt_tab_pane_6\" role=\"tabpanel\" aria-labelledby=\"kt_tab_pane_6\"><div id=\"tabkesimpulan\"></div></div><div class=\"tab-pane fade\" id=\"kt_tab_pane_7\" role=\"tabpanel\" aria-labelledby=\"kt_tab_pane_7\"><div id=\"tabdaftarpeserta\"></div></div><div class=\"tab-pane fade\" id=\"kt_tab_pane_8\" role=\"tabpanel\" aria-labelledby=\"kt_tab_pane_8\" style=\"height: 800px;\"><object data=\"")
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" hx-target=\"#tabkeuangan\" hx-indicator=\".uangloading\">Keuangan</a></li></ul></div><div class=\"tab-content mt-5\" id=\"myTabContent\"><div class=\"tab-pane fade show active\" id=\"kt_tab_pane_1\" role=\"tabpanel\" aria-labelledby=\"kt_tab_pane_1\"><div id=\"tabkepesertaan\"></div><div style=\"display: flex; justify-content: center; align-items: center;\"><span class=\"htmx-indicator spinner-border spinner-border-lg kepesertaanloading\" role=\"status\" aria-hidden=\"true\"></span></div></div><div class=\"tab-pane fade\" id=\"kt_tab_pane_2\" role=\"tabpanel\" aria-labelledby=\"kt_tab_pane_2\"><div id=\"tabkelainanglobal\"></div><div style=\"display: flex; justify-content: center; align-items: center;\"><span class=\"htmx-indicator spinner-border spinner-border-lg globalloading\" role=\"status\" aria-hidden=\"true\"></span></div></div><div class=\"tab-pane fade\" id=\"kt_tab_pane_3\" role=\"tabpanel\" aria-labelledby=\"kt_tab_pane_3\"><div id=\"tabkelainanlab\"></div><div style=\"display: flex; justify-content: center; align-items: center;\"><span class=\"htmx-indicator spinner-border spinner-border-lg labloading\" role=\"status\" aria-hidden=\"true\"></span></div></div><div class=\"tab-pane fade\" id=\"kt_tab_pane_4\" role=\"tabpanel\" aria-labelledby=\"kt_tab_pane_4\" style=\"height: 800px;\"><div id=\"tabkelainannonlab\"></div><div style=\"display: flex; justify-content: center; align-items: center;\"><span class=\"htmx-indicator spinner-border spinner-border-lg nonlabloading\" role=\"status\" aria-hidden=\"true\"></span></div></div><div class=\"tab-pane fade\" id=\"kt_tab_pane_5\" role=\"tabpanel\" aria-labelledby=\"kt_tab_pane_5\"><div id=\"tabkelainanfisik\"></div><div style=\"display: flex; justify-content: center; align-items: center;\"><span class=\"htmx-indicator spinner-border spinner-border-lg fisikloading\" role=\"status\" aria-hidden=\"true\"></span></div></div><div class=\"tab-pane fade\" id=\"kt_tab_pane_6\" role=\"tabpanel\" aria-labelledby=\"kt_tab_pane_6\"><div id=\"tabkesimpulan\"></div><div style=\"display: flex; justify-content: center; align-items: center;\"><span class=\"htmx-indicator spinner-border spinner-border-lg kesimpulanloading\" role=\"status\" aria-hidden=\"true\"></span></div></div><div class=\"tab-pane fade\" id=\"kt_tab_pane_7\" role=\"tabpanel\" aria-labelledby=\"kt_tab_pane_7\"><div id=\"tabdaftarpeserta\"></div><div style=\"display: flex; justify-content: center; align-items: center;\"><span class=\"htmx-indicator spinner-border spinner-border-lg daftperloading\" role=\"status\" aria-hidden=\"true\"></span></div></div><div class=\"tab-pane fade\" id=\"kt_tab_pane_8\" role=\"tabpanel\" aria-labelledby=\"kt_tab_pane_8\" style=\"height: 800px;\"><object data=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var10 string
templ_7745c5c3_Var10, templ_7745c5c3_Err = templ.JoinStringErrs("https://devcpone.aplikasi.web.id/birt/run?__report=report/one/mcu/rpt_summary_executive.rptdesign&__format=pdf&PID=" + id + "&username=adhi&tm=1717726294764")
templ_7745c5c3_Var10, templ_7745c5c3_Err = templ.JoinStringErrs("/birt/run?__report=report/one/mcu/rpt_executive_summary_mcu_001.rptdesign&__format=pdf&PID=" + id + "&username=admin&tm=1722914077866")
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutabview.templ`, Line: 65, Col: 171}
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutabview.templ`, Line: 81, Col: 148}
}
_, 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("\" type=\"application/pdf\" width=\"100%\" height=\"100%\"></object></div><div class=\"tab-pane fade\" id=\"kt_tab_pane_9\" role=\"tabpanel\" aria-labelledby=\"kt_tab_pane_9\"><div id=\"tabkeuangan\"></div></div></div>")
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" type=\"application/pdf\" width=\"100%\" height=\"100%\"></object></div><div class=\"tab-pane fade\" id=\"kt_tab_pane_9\" role=\"tabpanel\" aria-labelledby=\"kt_tab_pane_9\"><div id=\"tabkeuangan\"></div><div style=\"display: flex; justify-content: center; align-items: center;\"><span class=\"htmx-indicator spinner-border spinner-border-lg uangloading\" role=\"status\" aria-hidden=\"true\"></span></div></div></div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}

View File

@@ -97,10 +97,25 @@ templ CssLogin() {
templ JsLogin() {
<script src="/asset-corporate-portal/js/login-general.js"></script>
<script>
// const paramLocal = {
// token: localStorage.getItem('token')
// }
let tkn = localStorage.getItem('token')
if (tkn) {
htmx.ajax('POST', '/login/autologin', {
headers: {
Authorization: `Bearer ${tkn}`
}
})
}
</script>
}
templ ShowLogin(title string, cmp templ.Component, css templ.Component, js templ.Component) {
@layout.PlaygroundLayout(title, css, js) {
@cmp
}
}
}

View File

@@ -109,7 +109,7 @@ func JsLogin() templ.Component {
templ_7745c5c3_Var3 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<script src=\"/asset-corporate-portal/js/login-general.js\"></script>")
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<script src=\"/asset-corporate-portal/js/login-general.js\"></script><script>\r\n\t\t// const paramLocal = {\r\n\t\t// \ttoken: localStorage.getItem('token')\r\n\t\t// }\r\n\r\n\t\tlet tkn = localStorage.getItem('token')\r\n\r\n\t\tif (tkn) {\r\n\t\t\thtmx.ajax('POST', '/login/autologin', {\r\n\t\t\t\theaders: {\r\n\t\t\t\t\tAuthorization: `Bearer ${tkn}`\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t}\t\t\r\n\t</script>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}

View File

@@ -110,10 +110,12 @@ templ FormSignin(
hx-post="/login/signin"
hx-swap="outerHTML"
hx-target="#kt_login"
hx-indicator=".loginloading"
type="button"
id="kt_login_signin_submit"
class="btn btn-block font-weight-bolder text-white font-size-h6 px-8 py-4 my-3 mr-3 mt-5 btn-primary"
>
<span class="htmx-indicator spinner-border spinner-border-sm loginloading" role="status" aria-hidden="true"></span>
Sign In
</button>
</div>

View File

@@ -57,7 +57,7 @@ func FormSignin(
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<!--begin::Action--><div class=\"pb-lg-0 pb-5 pt-5\"><button hx-post=\"/login/signin\" hx-swap=\"outerHTML\" hx-target=\"#kt_login\" type=\"button\" id=\"kt_login_signin_submit\" class=\"btn btn-block font-weight-bolder text-white font-size-h6 px-8 py-4 my-3 mr-3 mt-5 btn-primary\">Sign In\r</button></div><!--end::Action--></form>")
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<!--begin::Action--><div class=\"pb-lg-0 pb-5 pt-5\"><button hx-post=\"/login/signin\" hx-swap=\"outerHTML\" hx-target=\"#kt_login\" hx-indicator=\".loginloading\" type=\"button\" id=\"kt_login_signin_submit\" class=\"btn btn-block font-weight-bolder text-white font-size-h6 px-8 py-4 my-3 mr-3 mt-5 btn-primary\"><span class=\"htmx-indicator spinner-border spinner-border-sm loginloading\" role=\"status\" aria-hidden=\"true\"></span> Sign In\r</button></div><!--end::Action--></form>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}