Compare commits

..

9 Commits

Author SHA1 Message Date
Sas Andy
d6fb303970 mdpasien add edit 2024-06-04 10:58:24 +07:00
Sas Andy
2e61efa16f Merge branch 'andy/mdpatient' of https://devone.aplikasi.web.id/gitea/andy/corporate_portal_westerindo into andy/mdpatient 2024-05-30 13:49:40 +07:00
Sas Andy
429dd01928 tmp datepicker 2024-05-30 13:49:32 +07:00
Sas Andy
50f08ec99f search & oagination md pasien 2024-05-30 13:49:32 +07:00
Sas Andy
6aaa3b92e5 tmp datepicker 2024-05-30 10:56:31 +07:00
Sas Andy
edebafa39c modal xl 2024-05-30 09:35:37 +07:00
Sas Andy
ac8cd1072e Merge branch 'andy/mdpatient' of https://devone.aplikasi.web.id/gitea/andy/corporate_portal_westerindo into andy/mdpatient 2024-05-29 16:32:10 +07:00
Sas Andy
0ac2756517 search & oagination md pasien 2024-05-29 16:31:55 +07:00
Sas Andy
66ee6a7839 search & oagination md pasien 2024-05-29 16:30:42 +07:00
164 changed files with 5925 additions and 25524 deletions

1
.gitignore vendored
View File

@@ -4,3 +4,4 @@ config.yaml
restapi.rest
cpone.db
coba.Http
uploads

View File

@@ -56,12 +56,4 @@ $ templ generate --watch
### Happy coding 😀!!
# LINK ODOO DAN TUTORIAL INIT
http://odoo.sismedika.com/web#id=6282&cids=1&menu_id=225&action=342&active_id=3&model=project.task&view_type=form
## BUILD WEB LINUX
Run di Bash command line
```
GOOS=linux GOARCH=amd64 go build -ldflags="-s -w" -o ./bin/main ./cmd/main.go
```
http://odoo.sismedika.com/web#id=6282&cids=1&menu_id=225&action=342&active_id=3&model=project.task&view_type=form

View File

@@ -296,7 +296,7 @@ a.text-white:focus {
}
.btn-field {
color: var(--text-black);
color: var(--text-black) !important;
background-color: var(--fieldbg) !important;
border-color: var(--fieldbg) !important;
}
@@ -313,13 +313,13 @@ a.text-white:focus {
border-radius: 0.85rem !important;
}
.btn-field:hover {
color: var(--text-black);
color: var(--text-black) !important;
background-color: var(--fieldbg) !important;
border-color: var(--fieldbg) !important;
}
.btn-field:focus,
.btn-field.focus {
color: var(--text-black);
color: var(--text-black) !important;
background-color: var(--fieldbg) !important;
border-color: var(--fieldbg) !important;
-webkit-box-shadow: 0 0 0 0rem var(--fieldbg) !important;
@@ -327,14 +327,14 @@ a.text-white:focus {
}
.btn-field.disabled,
.btn-field:disabled {
color: var(--text-black);
color: var(--text-black) !important;
background-color: var(--fieldbg) !important;
border-color: var(--fieldbg) !important;
}
.btn-field:not(:disabled):not(.disabled):active,
.btn-field:not(:disabled):not(.disabled).active,
.show > .btn-field.dropdown-toggle {
color: var(--text-black);
color: var(--text-black) !important;
background-color: var(--fieldbg) !important;
border-color: var(--fieldbg) !important;
}
@@ -5277,7 +5277,7 @@ a.text-hover-tosca:hover .svg-icon svg:hover g [fill],
}
/* ### CUSTOM CSS SELECTPICKER */
.btn-custom-selectpicker{
.btn-custom-selectpicker {
height: 8vh;
text-align: center;
}

View File

@@ -54,17 +54,17 @@ var KTLogin = function () {
validation.validate().then(function (status) {
if (status == 'Valid') {
// swal.fire({
// text: "All is cool! Now you submit this form",
// icon: "success",
// buttonsStyling: false,
// confirmButtonText: "Ok, got it!",
// customClass: {
// confirmButton: "btn font-weight-bold btn-light-primary"
// }
// }).then(function () {
// KTUtil.scrollTop();
// });
swal.fire({
text: "All is cool! Now you submit this form",
icon: "success",
buttonsStyling: false,
confirmButtonText: "Ok, got it!",
customClass: {
confirmButton: "btn font-weight-bold btn-light-primary"
}
}).then(function () {
KTUtil.scrollTop();
});
} else {
swal.fire({
text: "Sorry, looks like there are some errors detected, please try again.",

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

View File

@@ -1,784 +0,0 @@
<!DOCTYPE html>
<!--
Template Name: Metronic - Bootstrap 4 HTML, React, Angular 9 & VueJS Admin Dashboard Theme
Author: KeenThemes
Website: http://www.keenthemes.com/
Contact: support@keenthemes.com
Follow: www.twitter.com/keenthemes
Dribbble: www.dribbble.com/keenthemes
Like: www.facebook.com/keenthemes
Purchase: https://1.envato.market/EA4JP
Renew Support: https://1.envato.market/EA4JP
License: You must have a valid license purchased only from themeforest(the above link) in order to legally use the theme for your project.
-->
<html lang="en">
<!--begin::Head-->
<head>
<base href="../" />
<meta charset="utf-8" />
<title>KESIMPULAN & SARAN</title>
<meta name="description" content="Login page example" />
<meta
name="viewport"
content="width=device-width, initial-scale=1, shrink-to-fit=no"
/>
<!--begin::Fonts-->
<link
rel="stylesheet"
href="https://fonts.googleapis.com/css?family=Poppins:300,400,500,600,700"
/>
<!--end::Fonts-->
<!--begin::Page Custom Styles(used by this page)-->
<link
href="assets/css/pages/login/login-1.css"
rel="stylesheet"
type="text/css"
/>
<!--end::Page Custom Styles-->
<!--begin::Global Theme Styles(used by all pages)-->
<link
href="assets/plugins/global/plugins.bundle.css"
rel="stylesheet"
type="text/css"
/>
<link
href="assets/plugins/custom/prismjs/prismjs.bundle.css"
rel="stylesheet"
type="text/css"
/>
<link href="assets/css/style.bundle.css" rel="stylesheet" type="text/css" />
<!--end::Global Theme Styles-->
<!--begin::Layout Themes(used by all pages)-->
<link
href="assets/css/themes/layout/header/base/light.css"
rel="stylesheet"
type="text/css"
/>
<link
href="assets/css/themes/layout/header/menu/light.css"
rel="stylesheet"
type="text/css"
/>
<link
href="assets/css/themes/layout/brand/dark.css"
rel="stylesheet"
type="text/css"
/>
<link
href="assets/css/themes/layout/aside/dark.css"
rel="stylesheet"
type="text/css"
/>
<!--end::Layout Themes-->
<link
rel="stylesheet"
href="https://fonts.googleapis.com/css?family=Public Sans:300,400,500,600,700"
/>
<link rel="shortcut icon" href="assets/media/logos/favicon.ico" />
<link
rel="stylesheet"
href="https://fonts.googleapis.com/css?family=Roboto"
/>
<link
rel="stylesheet"
href="https://fonts.googleapis.com/css2?family=Material+Symbols+Rounded:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200"
/>
<link href="https://fonts.cdnfonts.com/css/open-sans" rel="stylesheet" />
<style>
#canvas {
/* overflow-x: scroll; */
margin: 40px 10vw 40px 10vw;
}
#title {
font-weight: 600;
}
.breadcrumb {
background-color: white;
padding: 0px 0px !important;
padding-left: 0 !important;
}
.breadcrumb-item a {
color: #3f4254;
font-family: Poppins;
font-size: 13px;
font-style: normal;
font-weight: 500;
line-height: 21px;
}
.breadcrumb-item.active {
color: #b5b5c3;
font-family: Poppins;
font-size: 13px;
font-style: normal;
font-weight: 500;
line-height: 21px;
}
.nav-tabs {
border-bottom: 0px solid #000000 !important;
}
.nav-link {
color: #637381;
font-family: Public Sans;
font-size: 14px;
font-style: normal;
font-weight: 600;
line-height: 22px;
text-align: center;
}
.nav-link.active {
color: #212b36 !important; /* Warna teks untuk tab yang aktif */
border-bottom: 2px solid #0c518c !important; /* Garis bawah untuk tab yang aktif */
font-family: Public Sans;
font-size: 14px;
font-style: normal;
font-weight: 600;
line-height: 22px;
text-align: center;
}
th {
color: #637381;
font-family: Roboto;
font-weight: 700 !important;
font-size: 14px !important;
padding-bottom: 5px !important;
padding-left: 1px !important;
border-bottom: 1pt dashed #e4e6ef !important;
}
tr {
border-bottom: 1pt dashed #e4e6ef !important;
font-family: Roboto;
}
td {
color: #0e1e28;
font-family: Roboto;
font-style: normal;
font-weight: 500 !important;
font-size: 16px !important;
line-height: 30px; /* 187.5% */
letter-spacing: -0.32px;
padding-left: 1px !important;
padding-top: 16px !important;
padding-bottom: 16px !important;
}
thead {
border-bottom: 1pt dashed #e4e6ef !important;
}
.kesimpulan-desc {
color: #0e1e28;
font-family: Roboto;
font-size: 12px;
font-style: normal;
font-weight: 500;
line-height: normal;
letter-spacing: -0.24px;
}
.label-text {
background-color: grey;
color: black;
padding: 5px 20px 5px 20px !important;
border-radius: 6px;
font-family: Poppins !important;
font-size: 11px !important;
font-style: normal !important;
font-weight: 500 !important;
line-height: normal !important;
}
.label-text.fit {
background: #c9f7f5;
color: #1bc5bd;
padding: 5px 20px 5px 20px !important;
border-radius: 6px;
font-family: Poppins !important;
font-size: 11px !important;
font-style: normal !important;
font-weight: 500 !important;
line-height: normal !important;
}
.label-text.unfit {
background: #fff4de;
color: #ffa800;
padding: 5px 20px 5px 20px !important;
border-radius: 6px;
font-family: Poppins !important;
font-size: 11px !important;
font-style: normal !important;
font-weight: 500 !important;
line-height: normal !important;
}
.iconify-btn {
color: #637381 !important;
width: 23px !important;
height: 23px !important;
margin-right: 1em;
}
.iconify-btn-blue {
color: #0c518c !important;
width: 23px !important;
height: 23px !important;
margin-right: 1em;
}
.modal-header {
border-bottom: none !important;
}
.modal-title {
font-family: "Public Sans" !important;
font-size: 18px !important;
font-style: normal !important;
font-weight: 700 !important;
line-height: 28px !important;
}
.modal-dialog {
border-radius: 8px;
}
.btn-print {
border-radius: 6px !important;
background-color: #f5f8fa !important;
font-family: Roboto;
font-size: 14px;
margin-bottom: 12px;
font-style: normal;
font-weight: 500;
line-height: normal;
display: flex;
width: 100%;
justify-content: space-between;
align-items: center;
}
.modal-xl {
border-radius: 6px !important;
max-width: 90vw !important;
max-height: 95vh !important;
width: 90vw !important;
height: 95vh !important;
}
.header-print {
background-color: #d9d9d9;
}
.modal-print-title {
color: #000;
font-family: "Open Sans";
font-size: 28px;
font-style: normal;
font-weight: 700;
line-height: normal;
}
.close-print {
color: red !important;
width: 30px !important;
height: 30px !important;
}
.form-label {
font-family: Poppins !important;
font-size: 14px !important;
font-style: normal !important;
font-weight: 600 !important;
line-height: 24px !important; /* 171.429% */
}
.form-input {
font-family: Poppins !important;
font-size: 16px !important;
font-style: normal !important;
font-weight: 400 !important;
line-height: 24px !important;
}
.btn-text {
font-family: "Public Sans";
font-size: 14px;
font-style: normal;
font-weight: 700;
line-height: 24px;
}
.dot-text {
position: relative;
padding-left: 1.5em; /* Menambahkan padding untuk memberi ruang pada titik */
}
.dot-text::before {
content: "•"; /* Menambahkan titik di depan teks */
position: absolute;
left: 1em; /* Atur posisi titik */
top: 0;
transform: translateX(-100%);
}
.information-title {
color: #0e1e28;
font-family: Poppins;
font-size: 20px;
font-style: normal;
font-weight: 600;
line-height: normal;
}
</style>
</head>
<!--end::Head-->
<!--begin::Body-->
<body
id="kt_body"
class="header-fixed bg-white header-mobile-fixed subheader-enabled subheader-fixed subheader-mobile-fixed aside-enabled aside-fixed aside-minimize-hoverable page-loading"
>
<!--begin::Main-->
<div class="d-flex flex-column flex-root bg-white" id="canvas">
<div>
<!-- breadcrumb & icon tanya START -->
<div class="row">
<div class="col-11">
<h1 class="title" style="margin-bottom: 0">
PT. Sadhana Abiyasa Sampoerna
</h1>
<nav aria-label="breadcrumb">
<ol class="breadcrumb" style="margin-bottom: 0">
<li class="breadcrumb-item"><a href="#">Dashboard</a></li>
<li class="breadcrumb-item">
<a href="#">Employee Health Medical Analytic</a>
</li>
<li class="breadcrumb-item">
<a href="#">PT. Sadhana Abiyasa Sampoerna</a>
</li>
<li class="breadcrumb-item active" aria-current="page">
Mcu Karyawan
</li>
</ol>
</nav>
</div>
<div class="col-1 align-content-center">
<!-- align-content-center -->
<div class="d-flex justify-content-end">
<a href="#">
<i class="fas fa-info-circle text-primary"></i>
</a>
</div>
</div>
</div>
<!-- breadcrumb & icon tanya END -->
</div>
<div class="mt-10">
<ul class="nav nav-tabs nav-tabs-line">
<li class="nav-item">
<a class="nav-link" data-toggle="tab" href="#kt_tab_pane_1"
>Peserta</a
>
</li>
<li class="nav-item">
<a class="nav-link" data-toggle="tab" href="#kt_tab_pane_2"
>Kelainan global</a
>
</li>
<li class="nav-item">
<a class="nav-link" data-toggle="tab" href="#kt_tab_pane_3"
>Kelainan Lab</a
>
</li>
<li class="nav-item">
<a class="nav-link" data-toggle="tab" href="#kt_tab_pane_4"
>kelainan Non Lab</a
>
</li>
<li class="nav-item">
<a class="nav-link" data-toggle="tab" href="#kt_tab_pane_5"
>kelainan Fisik</a
>
</li>
<li class="nav-item">
<a class="nav-link active" data-toggle="tab" href="#kt_tab_pane_6"
>Kesimpulan & Saran</a
>
</li>
<li class="nav-item">
<a class="nav-link" data-toggle="tab" href="#kt_tab_pane_7"
>Daftar Peserta</a
>
</li>
</ul>
</div>
<div class="d-flex justify-content-center pt-10 pb-10">
<h2 class="title" style="margin-bottom: 0">Kesimpulan</h2>
</div>
<!-- Kelainan pemeriksaan lab -->
<div class="card card-custom gutter-b" style="border-radius: 20px">
<div style="padding-top: 12px">
<h3 class="card-label dot-text text-black">
3 Kelainan Pemeriksaan Lab terbesar :
</h3>
</div>
<div class="card-body">
<div>
<table class="table table-hover table-borderless">
<thead>
<tr>
<th scope="col" width="5%">NO</th>
<th scope="col" width="70%">PEMERIKSAAN</th>
<th scope="col" width="25%">PRESENTASE</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>Hipercholesterolemia</td>
<td>44.5</td>
</tr>
<tr>
<td>2</td>
<td>Hiperuricemia</td>
<td>22.7</td>
</tr>
<tr>
<td>3</td>
<td>Peningkatan SGPT</td>
<td>15.8</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<!-- End Kelainan pemeriksaan lab -->
<!-- Kelainan pemeriksaan non lab -->
<div class="card card-custom gutter-b" style="border-radius: 20px">
<div style="padding-top: 12px">
<h3 class="card-label dot-text text-black">
3 Kelainan Pemeriksaan Non Lab terbesar :
</h3>
</div>
<div class="card-body">
<div>
<table class="table table-hover table-borderless">
<thead>
<tr>
<th scope="col" width="5%">NO</th>
<th scope="col" width="70%">PEMERIKSAAN</th>
<th scope="col" width="25%">PRESENTASE</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>Retriksi Ringan</td>
<td>22.0</td>
</tr>
<tr>
<td>2</td>
<td>Gangguan Konduksi Ringan</td>
<td>15.0</td>
</tr>
<tr>
<td>3</td>
<td>Obstruksi Sedang</td>
<td>13.0</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<!-- End Kelainan pemeriksaan non lab -->
<!-- Kelainan pemeriksaan Fisik -->
<div class="card card-custom gutter-b" style="border-radius: 20px">
<div style="padding-top: 12px">
<h3 class="card-label dot-text text-black">
3 Kelainan Pemeriksaan Fisik terbesar :
</h3>
</div>
<div class="card-body">
<div>
<table class="table table-hover table-borderless">
<thead>
<tr>
<th scope="col" width="5%">NO</th>
<th scope="col" width="70%">PEMERIKSAAN</th>
<th scope="col" width="25%">PRESENTASE</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>Obesitas Stage 1</td>
<td>41.7</td>
</tr>
<tr>
<td>2</td>
<td>Pre Hipertensi</td>
<td>39.0</td>
</tr>
<tr>
<td>3</td>
<td>Kelainan Refraksi</td>
<td>35.2</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<!-- End Kelainan pemeriksaan Fisik -->
<!-- Saran -->
<div class="d-flex justify-content-center pt-10 pb-10">
<h2 class="information-title title" style="margin-bottom: 0">Saran</h2>
</div>
<div class="mb-5">
<h3 class="information-title mb-3">Tujuan MCU</h3>
<div>
<div class="dot-text">Olah raga teratur</div>
<div class="dot-text">Penurunan berat badan</div>
</div>
</div>
<div class="mb-5">
<h3 class="information-title mb-3">Kelainan Refraksi</h3>
<div>
<div class="mb-5">
<div>1. Kelainan refraksi dengan kacamata</div>
<div class="dot-text">
Konsul dokter Scpesialis Mata untuk pemakaian kacamata/ lensa
kontak
</div>
</div>
<div>2. Kelainan refraksi tanpa kacamata</div>
<div class="dot-text">Pemakaian kacamata/ lensa kontak</div>
</div>
</div>
<div class="mb-5">
<h3 class="information-title mb-3">Tekanan Darah</h3>
<div>
<div class="mb-5">
<div>1. Pre Hipertensi</div>
<div class="dot-text">Olah raga teratur</div>
<div class="dot-text">Cukup istirahat</div>
<div class="dot-text">Pemeriksaan tekanan darah secara teratur</div>
</div>
<div class="mb-5">
<div>2. Hipertensi stage 1 dan 2</div>
<div class="dot-text">Olah raga teratur</div>
<div class="dot-text">Cukup istirahat</div>
<div class="dot-text">Batasi konsumsi garam</div>
<div class="dot-text">Pemeriksaan tekanan darah secara teratur</div>
<div class="dot-text">
Pengobatan/ minum obat secara teratur (bila ybs sudah minum obat,
hipertensi tetapi  kadang-kadang atau tidak rutin)
</div>
</div>
</div>
</div>
<div class="mb-5">
<h3 class="information-title mb-3">
Peningkatan Profil lemak dan Hiperglikemia
</h3>
<div>
<div class="dot-text">Diet rendah lemak, karbohidrat dan gula,</div>
<div class="dot-text">Olahraga secara teraturs</div>
<div class="dot-text">
Program promosi kesehatan terutama untuk mencegah terjadinya dampak
serius peningkatan lemak darah
</div>
</div>
</div>
<div class="mb-5">
<h3 class="information-title mb-3">Hiperuricemia</h3>
<div>
<div class="dot-text" s>
Mengurangi asupan makanan/sayuran yang mengandung purin (melinjo,
kangkung, jeroan, emping, dll)
</div>
</div>
</div>
<!-- End Saran -->
</div>
<!--end::Main-->
<script>
var HOST_URL =
"https://preview.keenthemes.com/metronic/theme/html/tools/preview";
</script>
<!--begin::Global Config(global config for global JS scripts)-->
<script>
var KTAppSettings = {
breakpoints: {
sm: 576,
md: 768,
lg: 992,
xl: 1200,
xxl: 1400,
},
colors: {
theme: {
base: {
white: "#ffffff",
primary: "#3699FF",
secondary: "#E5EAEE",
success: "#1BC5BD",
info: "#8950FC",
warning: "#FFA800",
danger: "#F64E60",
light: "#E4E6EF",
dark: "#181C32",
},
light: {
white: "#ffffff",
primary: "#E1F0FF",
secondary: "#EBEDF3",
success: "#C9F7F5",
info: "#EEE5FF",
warning: "#FFF4DE",
danger: "#FFE2E5",
light: "#F3F6F9",
dark: "#D6D6E0",
},
inverse: {
white: "#ffffff",
primary: "#ffffff",
secondary: "#3F4254",
success: "#ffffff",
info: "#ffffff",
warning: "#ffffff",
danger: "#ffffff",
light: "#464E5F",
dark: "#ffffff",
},
},
gray: {
"gray-100": "#F3F6F9",
"gray-200": "#EBEDF3",
"gray-300": "#E4E6EF",
"gray-400": "#D1D3E0",
"gray-500": "#B5B5C3",
"gray-600": "#7E8299",
"gray-700": "#5E6278",
"gray-800": "#3F4254",
"gray-900": "#181C32",
},
},
"font-family": "Poppins",
};
</script>
<!--end::Global Config-->
<!--begin::Global Theme Bundle(used by all pages)-->
<script src="assets/plugins/global/plugins.bundle.js"></script>
<script src="assets/plugins/custom/prismjs/prismjs.bundle.js"></script>
<script src="assets/js/scripts.bundle.js"></script>
<!--end::Global Theme Bundle-->
<!--begin::Page Vendors(used by this page)-->
<script src="assets/plugins/custom/fullcalendar/fullcalendar.bundle.js"></script>
<!--end::Page Vendors-->
<!--begin::Page Scripts(used by this page)-->
<script src="assets/js/pages/widgets.js"></script>
<!--end::Page Scripts-->
<!-- echartjs.min.js -->
<script src="assets/js/echarts-js/echart.min.js"></script>
<!-- SCRIPT -->
<script
src="https://cdnjs.cloudflare.com/ajax/libs/iconify/2.0.0/iconify.min.js"
integrity="sha512-lYMiwcB608+RcqJmP93CMe7b4i9G9QK1RbixsNu4PzMRJMsqr/bUrkXUuFzCNsRUo3IXNUr5hz98lINURv5CNA=="
crossorigin="anonymous"
referrerpolicy="no-referrer"
></script>
<script type="text/javascript">
$.fn.redraw = function () {
$(this).each(function () {
var redraw = this.offsetHeight;
});
};
function ShowModal(name, nolab) {
console.log(name + nolab);
$("#modal-list-print-title").text(name + "-" + nolab);
$(".modal-list-print").modal("show");
}
function ShowModalPrint(data, title) {
console.log(data);
let a =
"https://devone.aplikasi.web.id/birt/run?__report=report/one/lab/rpt_fo_001.rptdesign&__format=pdf&username=ADMIN&PID=132061?t=1713408676799";
let b =
"https://devone.aplikasi.web.id/birt/run?__report=report/one/external/rpt_mt_pramita_001.rptdesign&__format=pdf&username=adminsas%20&PID=77&tm=1713317444625";
$(".modal-print-title").text(title);
let tag =
'<object id="object-print" width="100%" type="application/pdf" style="height: 80vh" ></object>';
if (data === "1") {
// $("#object-print").attr("data", a);
tag =
'<object id="object-print" width="100%" data="' +
a +
'" type="application/pdf" style="height: 80vh" ></object>';
} else {
// $("#object-print").attr("data", b);
tag =
'<object id="object-print" width="100%" data="' +
b +
'" type="application/pdf" style="height: 80vh" ></object>';
}
$("#object-print").replaceWith(tag);
console.log(tag);
$(".modal-list-print").modal("hide");
$(".modal-print").modal("show");
}
function CloseModalPrint() {
// $("#object-print").removeAttr("data");
// $("#object-print").redraw();
$(".modal-list-print").modal("show");
$(".modal-print").modal("hide");
}
function ShowModalAkses(email, password, checked) {
console.log("email" + email);
console.log("password" + password);
console.log("checked :" + checked);
$(".modal-akses").modal("show");
$('input[name="email"]').val(email);
$('input[name="password"]').val(password);
// $("#akses").attr("checked", checked);
// $('input[type="checkbox"]').removeAttr("checked");
$('input[name="akses"]').removeAttr("checked");
let appChecked =
'<span class="switch switch-sm switch-akses "><label><input id="akses" type="checkbox" name="akses" checked/><span></span></label></span>';
let appNotChecked =
'<span class="switch switch-sm switch-akses "><label><input id="akses" type="checkbox" name="akses" /><span></span></label></span>';
if (checked === "checked") {
// $('input[name="akses"]').attr("checked");
// $(".form-akses-switch").append(appChecked);
$(".switch-akses").replaceWith(appChecked);
} else {
// $('input[name="akses"]').removeAttr("checked");
// $('input[name="akses"]').removeAttr("checked");
// $(".form-akses-switch").append(appNotChecked);
$(".switch-akses").replaceWith(appNotChecked);
}
if (checked !== "checked") {
$(".switch-akses").replaceWith(appNotChecked);
}
// $("#akses").load(window.location.href + " #akses");
}
$("#akses").change(function () {
if (this.checked) {
$('input[name="akses"]').attr("checked", "checked");
} else {
$('input[name="akses"]').removeAttr("checked");
}
});
</script>
</body>
<!--end::Body-->
</html>

View File

@@ -1,273 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<!--begin::Head-->
<head>
<base href="../" />
<meta charset="utf-8" />
<title>Company Portal | { title }</title>
<meta name="description" content="Company Portal" />
<meta
name="viewport"
content="width=device-width, initial-scale=1, shrink-to-fit=no"
/>
<!--begin::Fonts-->
<link rel="stylesheet" href="assets/css/googlefont/poppins.css" />
<!--end::Fonts-->
<!--begin::Page Custom Styles(used by this page)-->
<link
href="assets/css/pages/login/login-1.css"
rel="stylesheet"
type="text/css"
/>
<!--end::Page Custom Styles-->
<!--begin::Global Theme Styles(used by all pages)-->
<link
href="assets/plugins/global/plugins.bundle.css"
rel="stylesheet"
type="text/css"
/>
<link
href="assets/plugins/custom/prismjs/prismjs.bundle.css"
rel="stylesheet"
type="text/css"
/>
<link href="assets/css/style.bundle.css" rel="stylesheet" type="text/css" />
<!--end::Global Theme Styles-->
<!--begin::Layout Themes(used by all pages)-->
<link
href="assets/css/themes/layout/header/base/light.css"
rel="stylesheet"
type="text/css"
/>
<link
href="assets/css/themes/layout/header/menu/light.css"
rel="stylesheet"
type="text/css"
/>
<link
href="assets/css/themes/layout/brand/dark.css"
rel="stylesheet"
type="text/css"
/>
<link
href="assets/css/themes/layout/aside/dark.css"
rel="stylesheet"
type="text/css"
/>
<!--end::Layout Themes-->
<link
rel="shortcut icon"
href="asset-corporate-portal/media/logo/logo-small.jpg"
/>
<!--end::Layout Themes SAS-->
<link
href="asset-corporate-portal/css/sas.bundle.css"
rel="stylesheet"
type="text/css"
/>
<link
rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.13.18/css/bootstrap-select.min.css"
/>
<style>
.filter-option-inner-inner {
margin-top: 1.2vh;
color: var(--text-disabled);
}
.bootstrap-select > .dropdown-toggle.bs-placeholder.btn {
color: var(--text-disabled);
}
.bootstrap-select.btn-group .dropdown-menu {
min-width: 100%;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
position: sticky;
}
.dropdown-menu {
transform: translate3d(0px, 0px, 0px) !important;
}
/* mik */
.input-container {
position: relative;
}
.input-label {
position: absolute;
right: 20px;
transform: translateY(-50%);
pointer-events: none;
transition: all 0.2s ease;
}
.input-field:not(:placeholder-shown) + .input-label {
top: 50%;
font-size: 12px;
color: var(--secondary-hover);
}
</style>
</head>
<!--end::Head-->
<!--begin::Body-->
<body
id="kt_body"
class="bg-white header-fixed header-mobile-fixed subheader-enabled subheader-fixed subheader-mobile-fixed aside-enabled aside-fixed aside-minimize-hoverable page-loading"
>
<!--begin::Main-->
<div class="wrapperx p-5 h-100">
<!--begin::Row 1-->
<div class="form-row">
<div class="col-3">
<div class="container px-15">
<div
class="d-flex flex-column bg-primary-transparent rounded p-4 m-2 shadow"
>
<h4>Orders</h4>
<h1 class="font-weight-bolder ml-auto">120.000.000</h1>
</div>
</div>
</div>
<div class="col-3">
<div class="container px-15">
<div
class="d-flex flex-column bg-warning-transparent rounded p-4 m-2 shadow"
>
<h4>Tagihan</h4>
<h1 class="font-weight-bolder ml-auto">85.000.000</h1>
</div>
</div>
</div>
<div class="col-3">
<div class="container px-15">
<div
class="d-flex flex-column bg-success-transparent rounded p-4 m-2 shadow"
>
<h4>Pelunasan</h4>
<h1 class="font-weight-bolder ml-auto">55.000.000</h1>
</div>
</div>
</div>
<div class="col-3">
<div class="container px-15">
<div
class="d-flex flex-column bg-danger-transparent rounded p-4 m-2 shadow"
>
<h4>Hutang</h4>
<h1 class="font-weight-bolder ml-auto">55.000.000</h1>
</div>
</div>
</div>
<!--end::Row 1-->
</div>
<!-- begin::Row 2 -->
<div class="form-row mt-15">
<div class="col">
<div class="table-responsive">
<table class="table table-bordered">
<thead>
<tr >
<th scope="col" class="text-center text-black col-5" colspan="3">Tagihan</th>
<th scope="col" class="text-center text-black col-4" colspan="2">Pelunasan</th>
<th scope="col" class="text-center text-black col-3" rowspan="2">
<div class="d-flex justify-content-center align-items-center h-100">
<h3>Sisa</h3>
</div>
</th>
</tr>
<tr>
<th scope="col" class="text-center text-black">No/Tgl</th>
<th scope="col" class="text-center text-black">Tgl Jatuh Tempo</th>
<th scope="col" class="text-center text-black">Jumlah</th>
<th scope="col" class="text-center text-black">No/Tgl</th>
<th scope="col" class="text-center text-black">Jumlah</th>
</tr>
</thead>
<tbody>
<tr>
<td class="text-center" rowspan="2">T/103/200/XYZ 20 MARET 2024</td>
<td class="text-center" rowspan="2">20 MARET 2024</td>
<td class="text-center" rowspan="2">20.000.000</td>
<td class="text-center">T/103/200/XYZ 20 MARET 2024</td>
<td class="text-center">10.000.000</td>
<td class="text-center" rowspan="2">5.000.000</td>
</tr>
<tr>
<td class="text-center">T/103/200/XYZ 20 MARET 2024</td>
<td class="text-center">5.000.000</td>
</tr>
<tr>
<td class="text-center" rowspan="2">T/103/200/XYZ 20 MARET 2024</td>
<td class="text-center" rowspan="2">20 MARET 2024</td>
<td class="text-center" rowspan="2">20.000.000</td>
<td class="text-center">T/103/200/XYZ 20 MARET 2024</td>
<td class="text-center">10.000.000</td>
<td class="text-center" rowspan="2">5.000.000</td>
</tr>
<tr>
<td class="text-center">T/103/200/XYZ 20 MARET 2024</td>
<td class="text-center">5.000.000</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<!-- end::Row 2 -->
<!--end::Main-->
<script src="asset-corporate-portal/js/ktappsetting.js"></script>
<!-- iconify -->
<script src="assets/js/iconify/iconify.min.js"></script>
<!--end::Global Config-->
<!--begin::Global Theme Bundle(used by all pages)-->
<script src="assets/plugins/global/plugins.bundle.js"></script>
<script src="assets/plugins/custom/prismjs/prismjs.bundle.js"></script>
<script src="assets/js/scripts.bundle.js"></script>
<script src="assets/js/pages/crud/forms/widgets/bootstrap-datepicker.js"></script>
<script>
function ShowLoading() {
document
.getElementById("demo")
.setAttribute("style", "display:block !important;");
document
.getElementById("a")
.setAttribute("style", "display:none !important;");
}
function ShowForm() {
document
.getElementById("demo")
.setAttribute("style", "display:none !important;");
document
.getElementById("a")
.setAttribute("style", "display:block !important;;");
}
$(document).ready(function () {
// $(".selectpicker").selectpicker();
$(".selectpicker").selectpicker({
dropupAuto: false,
});
$("#datepicker").datepicker({
format: "dd/mm/yyyy",
});
$("#calendar-icon").click(function () {
$("#datepicker").datepicker("show");
});
});
</script>
<!--end::Global Theme Bundle-->
<!--end::Page Scripts-->
</body>
<!--end::Body-->
</html>

File diff suppressed because it is too large Load Diff

View File

@@ -129,8 +129,75 @@
id="kt_body"
class="bg-white header-fixed header-mobile-fixed subheader-enabled subheader-fixed subheader-mobile-fixed aside-enabled aside-fixed aside-minimize-hoverable page-loading"
>
<style></style>
<style>
/* input[type="file"] {
display: none;
} */
</style>
<!--begin::Main-->
<script
src="https://unpkg.com/htmx.org@1.9.12"
integrity="sha384-ujb1lZYygJmzgSwoxRggbCHcjc0rB2XoQrxeTUQyRjrOnlCoYta87iKBWq3EsdM2"
crossorigin="anonymous"
></script>
<script>
function onChangeInput() {
const fileInput = document.getElementById("file-upload");
const previewImage = document.getElementById("preview-image");
if (fileInput.files.length > 0) {
if (fileInput.files[0].size > 500000) {
fileInput.value = "";
Swal.fire("Warning", "File is too big!", "warning");
} else {
previewImage.src = URL.createObjectURL(fileInput.files[0]);
console.log(URL.createObjectURL(fileInput.files[0]));
console.log(fileInput.files[0].mozFullPath);
}
}
}
// window.addEventListener("DOMContentLoaded", () => {
// const fileInput = document.getElementById("file-upload");
// const previewImage = document.getElementById("preview-image");
// fileInput.addEventListener("change", (event) => {
// if (event.target.files.length > 0) {
// previewImage.src = URL.createObjectURL(event.target.files[0]);
// }
// // 👇️ reset file input once you're done
// fileInput.value = null;
// });
// });
</script>
<div>
<input
type="file"
hx-post="\dev\md\pasien\add"
name="pasienprofile"
hx-trigger="change"
/>
<div class="text-center">
<img
id="preview-image"
src="asset-corporate-portal/media/person/person.png"
class="rounded-lg"
alt="..."
style="width: 10vw; min-width: 100px;"
/>
</div>
<label for="file-upload" class="btn btn-light-primary d-block mt-5">
Update Foto
</label>
<input
id="file-upload"
type="file"
accept=".png, .jpg, .jpeg"
onchange="onChangeInput()"
/>
</div>
<div class="wrapperx p-5 h-100">
<div class="row">
@@ -141,7 +208,7 @@
<label
for="input1"
class="font-weight-bolder"
style="font-family: Poppins"
style="font-family: Poppins;"
>Sapaan</label
>
<select
@@ -157,7 +224,9 @@
</select>
</div>
<div class="col-md-6 col-lg-3">
<label for="input1" style="font-family: Poppins; font-weight: 600"
<label
for="input1"
style="font-family: Poppins; font-weight: 600;"
>Imbuhan Awal</label
>
<input
@@ -167,7 +236,9 @@
/>
</div>
<div class="col-md-6 col-lg-5">
<label for="input1" style="font-family: Poppins; font-weight: 600"
<label
for="input1"
style="font-family: Poppins; font-weight: 600;"
>Nama
</label>
<input
@@ -177,7 +248,9 @@
/>
</div>
<div class="col-md-6 col-lg-2">
<label for="input1" style="font-family: Poppins; font-weight: 600"
<label
for="input1"
style="font-family: Poppins; font-weight: 600;"
>Imbuhan Akhir</label
>
<input
@@ -195,7 +268,7 @@
<div class="form-row">
<label
for="input1"
style="font-family: Poppins; font-weight: 600"
style="font-family: Poppins; font-weight: 600;"
>Jenis Kelamin</label
>
<select
@@ -215,7 +288,7 @@
<div class="col-md-6">
<!-- begin::Tanggal Lahir -->
<div class="form-row">
<label style="font-family: Poppins; font-weight: 600"
<label style="font-family: Poppins; font-weight: 600;"
>Tanggal Lahir</label
>
<div class="input-group date bg-field border-0 rounded-lg">
@@ -234,7 +307,7 @@
<span
class="iconify text-grey"
data-icon="heroicons-solid:calendar"
style="font-size: 20px"
style="font-size: 20px;"
></span>
</span>
</div>
@@ -252,7 +325,7 @@
<div class="col">
<label
for="input1"
style="font-family: Poppins; font-weight: 600"
style="font-family: Poppins; font-weight: 600;"
>Umur</label
>
<div class="input-container">
@@ -294,7 +367,7 @@
<div class="col">
<label
for="input1"
style="font-family: Poppins; font-weight: 600"
style="font-family: Poppins; font-weight: 600;"
>Golongan Darah</label
>
<select
@@ -314,7 +387,7 @@
<!-- end::Golongan Darah -->
<!-- begin::Rhesus -->
<div class="col">
<label style="font-family: Poppins; font-weight: 600"
<label style="font-family: Poppins; font-weight: 600;"
>Rhesus</label
>
<select
@@ -339,7 +412,9 @@
<div class="row mt-5">
<!--begin::Pekerjaan-->
<div class="col-md-6">
<label for="input1" style="font-family: Poppins; font-weight: 600"
<label
for="input1"
style="font-family: Poppins; font-weight: 600;"
>Pekerjaan</label
>
<input
@@ -354,7 +429,7 @@
<div class="form-row">
<label
for="input1"
style="font-family: Poppins; font-weight: 600"
style="font-family: Poppins; font-weight: 600;"
>Departemen</label
>
<input
@@ -371,7 +446,9 @@
<div class="row mt-5">
<!--begin::Posisi-->
<div class="col-md-6">
<label for="input1" style="font-family: Poppins; font-weight: 600"
<label
for="input1"
style="font-family: Poppins; font-weight: 600;"
>Posisi</label
>
<input
@@ -384,7 +461,7 @@
<!--Begin::Pendidikan Terakhir-->
<div class="col-md-6">
<div class="form-row">
<label style="font-family: Poppins; font-weight: 600"
<label style="font-family: Poppins; font-weight: 600;"
>Pendidikan Terakhir</label
>
<select
@@ -413,26 +490,26 @@
<div class="form-row">
<label
for="input1"
style="font-family: Poppins; font-weight: 600"
style="font-family: Poppins; font-weight: 600;"
>Kewarganegaraan</label
>
<div class="form-control border-0 h-auto p-0 mt-3">
<div class="form-group">
<div
class="justify-content-between"
style="display: flex; gap: 20px"
style="display: flex; gap: 20px;"
>
<label
style="display: flex; align-items: center; gap: 5px"
style="display: flex; align-items: center; gap: 5px;"
>
<input type="radio" name="nationality" value="wni" />
<p style="margin: 0">WNI</p>
<p style="margin: 0;">WNI</p>
</label>
<label
style="display: flex; align-items: center; gap: 5px"
style="display: flex; align-items: center; gap: 5px;"
>
<input type="radio" name="nationality" value="wna" />
<p style="margin: 0">WNA</p>
<p style="margin: 0;">WNA</p>
</label>
</div>
</div>
@@ -443,7 +520,7 @@
<!--Begin::Etnis-->
<div class="col-md-6">
<div class="form-row">
<label style="font-family: Poppins; font-weight: 600"
<label style="font-family: Poppins; font-weight: 600;"
>Etnis</label
>
<select
@@ -473,7 +550,7 @@
<div class="col">
<label
for="input1"
style="font-family: Poppins; font-weight: 600"
style="font-family: Poppins; font-weight: 600;"
>Identitas</label
>
<select
@@ -500,7 +577,7 @@
<div class="col">
<label
for="input1"
style="font-family: Poppins; font-weight: 600"
style="font-family: Poppins; font-weight: 600;"
>Nomor Identitas</label
>
<input
@@ -522,7 +599,7 @@
<div class="col">
<label
for="input1"
style="font-family: Poppins; font-weight: 600"
style="font-family: Poppins; font-weight: 600;"
>Nomor HP</label
>
<input
@@ -540,7 +617,7 @@
<div class="col">
<label
for="input1"
style="font-family: Poppins; font-weight: 600"
style="font-family: Poppins; font-weight: 600;"
>Email</label
>
<input
@@ -561,7 +638,7 @@
<div class="col">
<img
src="asset-corporate-portal/media/person/person.png"
style="display: block; width: 13vw"
style="display: block; width: 13vw;"
/>
</div>
</div>
@@ -570,7 +647,7 @@
<div class="col">
<button
class="btn bg-primary-transparent text-center text-primary"
style="width: 13vw; font-weight: 600"
style="width: 13vw; font-weight: 600;"
>
Update Foto
</button>
@@ -580,6 +657,45 @@
</div>
</div>
</div>
<div>
<div
class="image-input image-input-empty image-input-outline"
id="kt_image_5"
style="background-image: url(assets/media/users/blank.png);"
>
<div class="image-input-wrapper"></div>
<label
class="btn btn-xs btn-icon btn-circle btn-white btn-hover-text-primary btn-shadow"
data-action="change"
data-toggle="tooltip"
title=""
data-original-title="Change avatar"
>
<i class="fa fa-pen icon-sm text-muted"></i>
<input type="file" name="profile_avatar" accept=".png, .jpg, .jpeg" />
<input type="hidden" name="profile_avatar_remove" />
</label>
<span
class="btn btn-xs btn-icon btn-circle btn-white btn-hover-text-primary btn-shadow"
data-action="cancel"
data-toggle="tooltip"
title="Cancel avatar"
>
<i class="ki ki-bold-close icon-xs text-muted"></i>
</span>
<span
class="btn btn-xs btn-icon btn-circle btn-white btn-hover-text-primary btn-shadow"
data-action="remove"
data-toggle="tooltip"
title="Remove avatar"
>
<i class="ki ki-bold-close icon-xs text-muted"></i>
</span>
</div>
</div>
<!--end::Main-->
<script src="asset-corporate-portal/js/ktappsetting.js"></script>
@@ -593,6 +709,7 @@
<script src="assets/js/pages/crud/forms/widgets/bootstrap-datepicker.js"></script>
<script>
var avatar5 = new KTImageInput("kt_image_5");
function ShowLoading() {
document
.getElementById("demo")

View File

@@ -1,20 +0,0 @@
package auth
import (
"net/http"
echojwt "github.com/labstack/echo-jwt/v4"
"github.com/labstack/echo/v4"
)
var IsLoggedIn = echojwt.WithConfig(
echojwt.Config{
SigningKey: []byte("--one_api-secret-2019-04-01"),
TokenLookup: "cookie:token",
ErrorHandler: JWTErrorChecker,
},
)
func JWTErrorChecker(c echo.Context, err error) error {
return c.Redirect(http.StatusTemporaryRedirect, "/login")
}

View File

@@ -11,7 +11,7 @@ script GenerateChart(idDiv string, udata string) {
var element = document.getElementById(idDiv);
console.log("element ",element)
if (element) {
element.style.height = "450px";
element.style.height = "400px";
element.style.width = "100%";
}
@@ -21,35 +21,6 @@ script GenerateChart(idDiv string, udata string) {
// 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);
myChart[idDiv].setOption(option[idDiv]);
});
}
templ ShowChartFixed(idDiv string, udata string, width string, height string) {
<div id={ idDiv } class="mx-auto"></div>
@GenerateChartFixed(idDiv, udata, width, height)
}
script GenerateChartFixed(idDiv string, udata string, width 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;
element.style.width = width;
}
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)

View File

@@ -53,13 +53,13 @@ func ShowChart(idDiv string, udata string) templ.Component {
func GenerateChart(idDiv string, udata string) templ.ComponentScript {
return templ.ComponentScript{
Name: `__templ_GenerateChart_906c`,
Function: `function __templ_GenerateChart_906c(idDiv, udata){htmx.onLoad(function(elt) {
Name: `__templ_GenerateChart_4c73`,
Function: `function __templ_GenerateChart_4c73(idDiv, udata){htmx.onLoad(function(elt) {
console.log("elt ",elt)
var element = document.getElementById(idDiv);
console.log("element ",element)
if (element) {
element.style.height = "450px";
element.style.height = "400px";
element.style.width = "100%";
}
@@ -76,78 +76,7 @@ func GenerateChart(idDiv string, udata string) templ.ComponentScript {
myChart[idDiv].setOption(option[idDiv]);
});
}`,
Call: templ.SafeScript(`__templ_GenerateChart_906c`, idDiv, udata),
CallInline: templ.SafeScriptInline(`__templ_GenerateChart_906c`, idDiv, udata),
}
}
func ShowChartFixed(idDiv string, udata string, width 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_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("<div id=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var4 string
templ_7745c5c3_Var4, templ_7745c5c3_Err = templ.JoinStringErrs(idDiv)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\chart\chart.templ`, Line: 33, Col: 19}
}
_, 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("\" class=\"mx-auto\"></div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = GenerateChartFixed(idDiv, udata, width, 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 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)
var element = document.getElementById(idDiv);
console.log("element ",element)
if (element) {
element.style.height = height;
element.style.width = width;
}
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);
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_GenerateChart_4c73`, idDiv, udata),
CallInline: templ.SafeScriptInline(`__templ_GenerateChart_4c73`, idDiv, udata),
}
}

View File

@@ -0,0 +1,113 @@
package customdatepicker
import "cpone/models"
templ CustomDatePicker(inp models.CustomDatePickerPrm) {
<div class="form-row">
<label style="font-family: Poppins; font-weight: 600;">{ inp.Label }</label>
<div class="input-group date rounded-left-lg">
<input
type="text"
readonly
name={ inp.Name }
value={ inp.Value }
placeholder={ inp.Placeholder }
id="datepicker"
if inp.ErrorMsg == "" {
class="form-control bg-field border-0 h-auto "
} else {
class="form-control is-invalid bg-field border-0 h-auto "
}
/>
<div class="input-group-prepend">
<span
class="input-group-text bg-field border-0 rounded-lg rounded-left-0"
id="calendar-icon"
>
<span
class="iconify text-grey"
data-icon="heroicons-solid:calendar"
style="font-size: 20px;"
></span>
</span>
</div>
<div class="invalid-feedback text-danger mt-3 ml-2">
{ inp.ErrorMsg }
</div>
</div>
</div>
if inp.ID == "" {
<div class="text-danger mt-3 ml-2">
ID Mandatory
</div>
}
@TES(inp.ID)
// @JsDatePicker("#" + inp.ID)
}
templ CustomDatePickerV2(inp models.CustomDatePickerPrm) {
<div class="form-group">
<label
if inp.Type == "hidden" {
class="text-black d-none"
} else {
class="text-black"
}
style="font-family: Poppins; font-weight: 600;"
>{ inp.Label } </label>
<input
id={ inp.Name }
name={ inp.Name }
type="date"
placeholder={ inp.Placeholder }
value={ inp.Value }
if inp.ErrorMsg =="" {
class="form-control bg-field border-0 form-control-lg bg-field rounded-lg"
} else {
class="form-control bg-field border-1 form-control-lg bg-field rounded-lg is-invalid"
}
/>
<div class="invalid-feedback text-danger mt-3 ml-2">
{ inp.ErrorMsg }
</div>
</div>
// @JsDatePicker("#" + inp.ID)
}
script TES(id string) {
$(document).ready(function () {
$(id).datepicker({
format: "dd/mm/yyyy",
});
$("#calendar-icon").click(function () {
$(id).datepicker("show");
});
});
}
script Format(idtest string) {
$(idtest).datepicker({
format: "dd/mm/yyyy",
});
}
script IconOnClick(idtest string) {
$("#calendar-icon").click(function () {
$(idtest).datepicker("show");
});
}
templ JsDatePicker(id string) {
<script>
var idCoba = {inp.ID}
$(document).ready(function () {
$(idDp).datepicker({
format: "dd/mm/yyyy",
});
$("#calendar-icon").click(function () {
$(idDp).datepicker("show");
});
});
</script>
}

View File

@@ -0,0 +1,325 @@
// Code generated by templ - DO NOT EDIT.
// templ: version: v0.2.663
package customdatepicker
//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"
func CustomDatePicker(inp models.CustomDatePickerPrm) 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 class=\"form-row\"><label style=\"font-family: Poppins; font-weight: 600;\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var2 string
templ_7745c5c3_Var2, templ_7745c5c3_Err = templ.JoinStringErrs(inp.Label)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\customdatepicker\customdatepicker.templ`, Line: 7, Col: 68}
}
_, 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("</label><div class=\"input-group date rounded-left-lg\"><input type=\"text\" readonly name=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var3 string
templ_7745c5c3_Var3, templ_7745c5c3_Err = templ.JoinStringErrs(inp.Name)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\customdatepicker\customdatepicker.templ`, Line: 12, Col: 19}
}
_, 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("\" value=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var4 string
templ_7745c5c3_Var4, templ_7745c5c3_Err = templ.JoinStringErrs(inp.Value)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\customdatepicker\customdatepicker.templ`, Line: 13, Col: 21}
}
_, 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("\" placeholder=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var5 string
templ_7745c5c3_Var5, templ_7745c5c3_Err = templ.JoinStringErrs(inp.Placeholder)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\customdatepicker\customdatepicker.templ`, Line: 14, Col: 33}
}
_, 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("\" id=\"datepicker\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if inp.ErrorMsg == "" {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(" class=\"form-control bg-field border-0 h-auto \"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
} else {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(" class=\"form-control is-invalid bg-field border-0 h-auto \"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("><div class=\"input-group-prepend\"><span class=\"input-group-text bg-field border-0 rounded-lg rounded-left-0\" id=\"calendar-icon\"><span class=\"iconify text-grey\" data-icon=\"heroicons-solid:calendar\" style=\"font-size: 20px;\"></span></span></div><div class=\"invalid-feedback text-danger mt-3 ml-2\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var6 string
templ_7745c5c3_Var6, templ_7745c5c3_Err = templ.JoinStringErrs(inp.ErrorMsg)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\customdatepicker\customdatepicker.templ`, Line: 35, Col: 18}
}
_, 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("</div></div></div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if inp.ID == "" {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div class=\"text-danger mt-3 ml-2\">ID Mandatory \r</div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
}
templ_7745c5c3_Err = TES(inp.ID).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 CustomDatePickerV2(inp models.CustomDatePickerPrm) 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 class=\"form-group\"><label")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if inp.Type == "hidden" {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(" class=\"text-black d-none\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
} else {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(" class=\"text-black\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(" style=\"font-family: Poppins; font-weight: 600;\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var8 string
templ_7745c5c3_Var8, templ_7745c5c3_Err = templ.JoinStringErrs(inp.Label)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\customdatepicker\customdatepicker.templ`, Line: 57, Col: 14}
}
_, 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("</label> <input id=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var9 string
templ_7745c5c3_Var9, templ_7745c5c3_Err = templ.JoinStringErrs(inp.Name)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\customdatepicker\customdatepicker.templ`, Line: 59, Col: 16}
}
_, 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("\" name=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var10 string
templ_7745c5c3_Var10, templ_7745c5c3_Err = templ.JoinStringErrs(inp.Name)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\customdatepicker\customdatepicker.templ`, Line: 60, Col: 18}
}
_, 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=\"date\" placeholder=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var11 string
templ_7745c5c3_Var11, templ_7745c5c3_Err = templ.JoinStringErrs(inp.Placeholder)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\customdatepicker\customdatepicker.templ`, Line: 62, Col: 32}
}
_, 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("\" value=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var12 string
templ_7745c5c3_Var12, templ_7745c5c3_Err = templ.JoinStringErrs(inp.Value)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\customdatepicker\customdatepicker.templ`, Line: 63, Col: 20}
}
_, 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("\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if inp.ErrorMsg == "" {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(" class=\"form-control bg-field border-0 form-control-lg bg-field rounded-lg\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
} else {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(" class=\"form-control bg-field border-1 form-control-lg bg-field rounded-lg is-invalid\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("><div class=\"invalid-feedback text-danger mt-3 ml-2\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var13 string
templ_7745c5c3_Var13, templ_7745c5c3_Err = templ.JoinStringErrs(inp.ErrorMsg)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\customdatepicker\customdatepicker.templ`, Line: 71, Col: 17}
}
_, 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("</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
})
}
func TES(id string) templ.ComponentScript {
return templ.ComponentScript{
Name: `__templ_TES_b105`,
Function: `function __templ_TES_b105(id){$(document).ready(function () {
$(id).datepicker({
format: "dd/mm/yyyy",
});
$("#calendar-icon").click(function () {
$(id).datepicker("show");
});
});
}`,
Call: templ.SafeScript(`__templ_TES_b105`, id),
CallInline: templ.SafeScriptInline(`__templ_TES_b105`, id),
}
}
func Format(idtest string) templ.ComponentScript {
return templ.ComponentScript{
Name: `__templ_Format_c41d`,
Function: `function __templ_Format_c41d(idtest){$(idtest).datepicker({
format: "dd/mm/yyyy",
});
}`,
Call: templ.SafeScript(`__templ_Format_c41d`, idtest),
CallInline: templ.SafeScriptInline(`__templ_Format_c41d`, idtest),
}
}
func IconOnClick(idtest string) templ.ComponentScript {
return templ.ComponentScript{
Name: `__templ_IconOnClick_a67e`,
Function: `function __templ_IconOnClick_a67e(idtest){$("#calendar-icon").click(function () {
$(idtest).datepicker("show");
});
}`,
Call: templ.SafeScript(`__templ_IconOnClick_a67e`, idtest),
CallInline: templ.SafeScriptInline(`__templ_IconOnClick_a67e`, idtest),
}
}
func JsDatePicker(id 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_Var14 := templ.GetChildren(ctx)
if templ_7745c5c3_Var14 == nil {
templ_7745c5c3_Var14 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<script>\r\n\tvar idCoba = {inp.ID}\r\n\t$(document).ready(function () {\r\n $(idDp).datepicker({\r\n \t\tformat: \"dd/mm/yyyy\",\r\n });\r\n $(\"#calendar-icon\").click(function () {\r\n \t\t$(idDp).datepicker(\"show\");\r\n });\r\n });\r\n\t</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
})
}

View File

@@ -98,9 +98,9 @@ templ CustomDropdownForm(
<label class="text-black" style="font-family: Poppins; font-weight: 600;">{ inp.Label } </label>
<select
if inp.ErrorMsg =="" {
class="form-control form-control-lg bg-field btn-lg rounded-lg selectpicker"
class="form-control text-black form-control-lg bg-field btn-lg border-0 rounded-lg selectpicker"
} else {
class="form-control form-control-lg bg-field btn-lg rounded-lg selectpicker is-invalid"
class="form-control text-black form-control-lg bg-field btn-lg border-1 rounded-lg selectpicker is-invalid"
}
data-live-search="true"
data-size="5"

View File

@@ -529,12 +529,12 @@ func CustomDropdownForm(
return templ_7745c5c3_Err
}
if inp.ErrorMsg == "" {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(" class=\"form-control form-control-lg bg-field btn-lg rounded-lg selectpicker\"")
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(" class=\"form-control text-black form-control-lg bg-field btn-lg border-0 rounded-lg selectpicker\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
} else {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(" class=\"form-control form-control-lg bg-field btn-lg rounded-lg selectpicker is-invalid\"")
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(" class=\"form-control text-black form-control-lg bg-field btn-lg border-1 rounded-lg selectpicker is-invalid\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}

View File

@@ -18,6 +18,8 @@ templ CustomTextFieldv2(inp models.CustomTextFieldv2Prm) {
type={ inp.Type }
placeholder={ inp.Placeholder }
value={ inp.Value }
min={ inp.Min }
min={ inp.Max }
if inp.ErrorMsg =="" {
class="form-control bg-field border-0 form-control-lg bg-field rounded-lg"
} else {

View File

@@ -118,6 +118,32 @@ func CustomTextFieldv2(inp models.CustomTextFieldv2Prm) templ.Component {
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" min=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var8 string
templ_7745c5c3_Var8, templ_7745c5c3_Err = templ.JoinStringErrs(inp.Min)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\customtextfield\customtextfieldv2.templ`, Line: 21, Col: 16}
}
_, 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("\" min=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var9 string
templ_7745c5c3_Var9, templ_7745c5c3_Err = templ.JoinStringErrs(inp.Max)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\customtextfield\customtextfieldv2.templ`, Line: 22, Col: 16}
}
_, 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("\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
@@ -137,12 +163,12 @@ func CustomTextFieldv2(inp models.CustomTextFieldv2Prm) templ.Component {
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var8 string
templ_7745c5c3_Var8, templ_7745c5c3_Err = templ.JoinStringErrs(inp.ErrorMsg)
var templ_7745c5c3_Var10 string
templ_7745c5c3_Var10, templ_7745c5c3_Err = templ.JoinStringErrs(inp.ErrorMsg)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\customtextfield\customtextfieldv2.templ`, Line: 28, Col: 17}
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\customtextfield\customtextfieldv2.templ`, Line: 30, Col: 17}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var8))
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var10))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}

View File

@@ -0,0 +1,51 @@
package customuploadfoto
import "cpone/models"
templ CustomUploadFotoWithPreview(prm models.CustomUploadFotoPrm) {
<div>
<div class="text-center">
<img
id={ prm.ID + "-preview-image" }
if prm.LinkFoto == "" {
src="asset-corporate-portal/media/person/person.png"
} else {
src={ prm.LinkFoto }
}
class="rounded-lg"
alt="..."
style="width: 10vw; min-width: 100px;"
/>
</div>
<label for={ prm.ID } class="btn btn-light-primary d-block mt-5">
{ prm.Label }
</label>
<input
id={ prm.ID }
style="display: none;"
name={ prm.Name }
type="file"
accept={ prm.Accept }
onchange={ OnSelect(prm.ID) }
hx-on::load={ OnSelect(prm.ID) }
/>
</div>
}
script OnSelect(id string) {
const fileInput = document.getElementById(id);
const previewImage = document.getElementById(id+"-preview-image");
if (fileInput.files.length > 0) {
if (fileInput.files[0].size > 500000) {
fileInput.value = "";
Swal.fire("Warning", "File is too big!", "warning");
} else {
previewImage.src = URL.createObjectURL(fileInput.files[0]);
}
}
// 👇️ reset file input once you're done
}

View File

@@ -0,0 +1,193 @@
// Code generated by templ - DO NOT EDIT.
// templ: version: v0.2.663
package customuploadfoto
//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"
func CustomUploadFotoWithPreview(prm models.CustomUploadFotoPrm) 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><div class=\"text-center\"><img id=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var2 string
templ_7745c5c3_Var2, templ_7745c5c3_Err = templ.JoinStringErrs(prm.ID + "-preview-image")
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\customuploadfoto\customuploadfoto.templ`, Line: 9, Col: 34}
}
_, 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("\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if prm.LinkFoto == "" {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(" src=\"asset-corporate-portal/media/person/person.png\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
} else {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(" src=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var3 string
templ_7745c5c3_Var3, templ_7745c5c3_Err = templ.JoinStringErrs(prm.LinkFoto)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\customuploadfoto\customuploadfoto.templ`, Line: 13, Col: 23}
}
_, 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("\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(" class=\"rounded-lg\" alt=\"...\" style=\"width: 10vw; min-width: 100px;\"></div><label for=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var4 string
templ_7745c5c3_Var4, templ_7745c5c3_Err = templ.JoinStringErrs(prm.ID)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\customuploadfoto\customuploadfoto.templ`, Line: 20, Col: 21}
}
_, 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("\" class=\"btn btn-light-primary d-block mt-5\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var5 string
templ_7745c5c3_Var5, templ_7745c5c3_Err = templ.JoinStringErrs(prm.Label)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\customuploadfoto\customuploadfoto.templ`, Line: 21, Col: 14}
}
_, 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("</label> ")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = templ.RenderScriptItems(ctx, templ_7745c5c3_Buffer, OnSelect(prm.ID), OnSelect(prm.ID))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<input id=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var6 string
templ_7745c5c3_Var6, templ_7745c5c3_Err = templ.JoinStringErrs(prm.ID)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\customuploadfoto\customuploadfoto.templ`, Line: 24, Col: 14}
}
_, 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("\" style=\"display: none;\" name=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var7 string
templ_7745c5c3_Var7, templ_7745c5c3_Err = templ.JoinStringErrs(prm.Name)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\customuploadfoto\customuploadfoto.templ`, Line: 26, Col: 18}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var7))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" type=\"file\" accept=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var8 string
templ_7745c5c3_Var8, templ_7745c5c3_Err = templ.JoinStringErrs(prm.Accept)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\customuploadfoto\customuploadfoto.templ`, Line: 28, Col: 22}
}
_, 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("\" onchange=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var9 templ.ComponentScript = OnSelect(prm.ID)
_, 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("\" hx-on::load=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var10 templ.ComponentScript = OnSelect(prm.ID)
_, 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("\"></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 OnSelect(id string) templ.ComponentScript {
return templ.ComponentScript{
Name: `__templ_OnSelect_4511`,
Function: `function __templ_OnSelect_4511(id){const fileInput = document.getElementById(id);
const previewImage = document.getElementById(id+"-preview-image");
if (fileInput.files.length > 0) {
if (fileInput.files[0].size > 500000) {
fileInput.value = "";
Swal.fire("Warning", "File is too big!", "warning");
} else {
previewImage.src = URL.createObjectURL(fileInput.files[0]);
}
}
// 👇️ reset file input once you're done
}`,
Call: templ.SafeScript(`__templ_OnSelect_4511`, id),
CallInline: templ.SafeScriptInline(`__templ_OnSelect_4511`, id),
}
}

View File

@@ -57,29 +57,3 @@ templ ModalXL(modalID string, modalTitle string, modalBody templ.Component, moda
</div>
</div>
}
templ ModalViewXL(modalID string, modalTitle string, modalBody templ.Component, btnClose templ.Component) {
<div
class="modal fade"
style="display: none"
id={ modalID }
tabindex="-1"
role="dialog"
data-backdrop="static"
aria-hidden="true"
>
<div class="modal-dialog modal-xl modal-dialog-centered" role="document">
<div class="modal-content rounded-lg">
<div class="modal-header border-bottom-0">
<h6 class="modal-title text-black font-weight-bolder">
{ modalTitle }
</h6>
@btnClose
</div>
<div class="modal-body border-bottom-0">
@modalBody
</div>
</div>
</div>
</div>
}

View File

@@ -157,69 +157,3 @@ func ModalXL(modalID string, modalTitle string, modalBody templ.Component, modal
return templ_7745c5c3_Err
})
}
func ModalViewXL(modalID string, modalTitle string, modalBody templ.Component, btnClose 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_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 class=\"modal fade\" style=\"display: none\" id=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var8 string
templ_7745c5c3_Var8, templ_7745c5c3_Err = templ.JoinStringErrs(modalID)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\modal\modal.templ`, Line: 65, Col: 14}
}
_, 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("\" tabindex=\"-1\" role=\"dialog\" data-backdrop=\"static\" aria-hidden=\"true\"><div class=\"modal-dialog modal-xl modal-dialog-centered\" role=\"document\"><div class=\"modal-content rounded-lg\"><div class=\"modal-header border-bottom-0\"><h6 class=\"modal-title text-black font-weight-bolder\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var9 string
templ_7745c5c3_Var9, templ_7745c5c3_Err = templ.JoinStringErrs(modalTitle)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\modal\modal.templ`, Line: 75, Col: 18}
}
_, 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("</h6>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = btnClose.Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</div><div class=\"modal-body border-bottom-0\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = modalBody.Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</div></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

@@ -40,50 +40,6 @@ templ Navbar(dataUser models.User) {
</div>
}
templ NavbarWithLogo(dataUser models.User) {
<div id="kt_header" class="header">
<!--begin::Container-->
<div class="container-fluid d-flex align-items-stretch justify-content-between">
<!--begin::Header Menu Wrapper-->
<div class="header-menu-wrapper header-menu-wrapper-left" id="kt_header_menu_wrapper">
<a class="navbar-brand" href="#">
<img
src="/asset-corporate-portal/media/landingpage/logo.png"
width="126"
height="40"
class="d-inline-block align-top"
alt="Your Brand"
/>
</a>
</div>
<!--end::Header Menu Wrapper-->
<!--begin::Topbar-->
<div class="topbar">
<!--begin::User-->
<div class="topbar-item">
<div
class="btn btn-icon btn-icon-mobile w-auto btn-clean d-flex align-items-center btn-lg px-2"
id="kt_quick_user_toggle"
>
<span
class="text-muted font-weight-bold font-size-base d-none d-md-inline mr-1"
>Hi,</span>
<span
class="text-dark-50 font-weight-bolder font-size-base d-none d-md-inline mr-3"
>{ dataUser.Username }</span>
<span class="bg-primary-transparent p-3" style="border-radius: 50%; width: 40px; height: 40px;">
<span class="iconify text-primary" data-icon="gravity-ui:person"></span>
</span>
</div>
</div>
<!--end::User-->
</div>
<!--end::Topbar-->
</div>
<!--end::Container-->
</div>
}
templ NavbarMenu(datamenu []models.Menu) {
<div class="aside-menu-wrapper flex-column-fluid" id="kt_aside_menu_wrapper">
<!--begin::Menu Container-->

View File

@@ -53,7 +53,7 @@ func Navbar(dataUser models.User) templ.Component {
})
}
func NavbarWithLogo(dataUser models.User) templ.Component {
func NavbarMenu(datamenu []models.Menu) 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 {
@@ -66,43 +66,6 @@ func NavbarWithLogo(dataUser models.User) templ.Component {
templ_7745c5c3_Var3 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div id=\"kt_header\" class=\"header\"><!--begin::Container--><div class=\"container-fluid d-flex align-items-stretch justify-content-between\"><!--begin::Header Menu Wrapper--><div class=\"header-menu-wrapper header-menu-wrapper-left\" id=\"kt_header_menu_wrapper\"><a class=\"navbar-brand\" href=\"#\"><img src=\"/asset-corporate-portal/media/landingpage/logo.png\" width=\"126\" height=\"40\" class=\"d-inline-block align-top\" alt=\"Your Brand\"></a></div><!--end::Header Menu Wrapper--><!--begin::Topbar--><div class=\"topbar\"><!--begin::User--><div class=\"topbar-item\"><div class=\"btn btn-icon btn-icon-mobile w-auto btn-clean d-flex align-items-center btn-lg px-2\" id=\"kt_quick_user_toggle\"><span class=\"text-muted font-weight-bold font-size-base d-none d-md-inline mr-1\">Hi,</span> <span class=\"text-dark-50 font-weight-bolder font-size-base d-none d-md-inline mr-3\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var4 string
templ_7745c5c3_Var4, templ_7745c5c3_Err = templ.JoinStringErrs(dataUser.Username)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\navbar\navbar.templ`, Line: 73, Col: 26}
}
_, 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("</span> <span class=\"bg-primary-transparent p-3\" style=\"border-radius: 50%; width: 40px; height: 40px;\"><span class=\"iconify text-primary\" data-icon=\"gravity-ui:person\"></span></span></div></div><!--end::User--></div><!--end::Topbar--></div><!--end::Container--></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 NavbarMenu(datamenu []models.Menu) 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 class=\"aside-menu-wrapper flex-column-fluid\" id=\"kt_aside_menu_wrapper\"><!--begin::Menu Container--><div id=\"kt_aside_menu\" class=\"aside-menu my-4 \" data-menu-vertical=\"1\" data-menu-scroll=\"1\" data-menu-dropdown-timeout=\"500\"><!--begin::Menu Nav--><ul class=\"menu-nav \">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err

View File

@@ -24,16 +24,16 @@ templ Navbaruserprofile(dataUser models.User) {
<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>
<div>
<!--begin:Heading-->
<h5 class="mb-5">
Recent Notifications
</h5>
<!--end:Heading-->
<!--begin::Item-->
@NotificationCard()
<!--end::Item-->
</div>
<!--end::Notifications-->
</div>
<!--end::Content-->
@@ -55,12 +55,7 @@ templ ProfileHeader(dataUser models.User) {
{ 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>
<a href="#" class="btn btn-sm btn-light-primary font-weight-bolder py-2 px-5">Sign Out</a>
</div>
</div>
</div>

View File

@@ -33,7 +33,15 @@ 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><!--end::Separator--><!--begin::Notifications--><div><!--begin:Heading--><h5 class=\"mb-5\">Recent Notifications\r</h5><!--end:Heading--><!--begin::Item-->")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = NotificationCard().Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<!--end::Item--></div><!--end::Notifications--></div><!--end::Content--></div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
@@ -83,7 +91,7 @@ func ProfileHeader(dataUser models.User) templ.Component {
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 class=\"navi mt-2\"><a href=\"#\" class=\"btn btn-sm btn-light-primary font-weight-bolder py-2 px-5\">Sign Out</a></div></div></div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}

View File

@@ -10,11 +10,7 @@ templ TableV3(thName []string, thWidth []string, trComponent templ.Component) {
<thead>
<tr class="rounded-lg bg-header-table">
for i, item := range thName {
if item == "AKSI" {
<th scope="col" width={ thWidth[i] } class="text-center">{ item }</th>
} else {
<th scope="col" width={ thWidth[i] }>{ item }</th>
}
<th scope="col" width={ thWidth[i] }>{ item }</th>
}
</tr>
</thead>

View File

@@ -38,68 +38,35 @@ func TableV3(thName []string, thWidth []string, trComponent templ.Component) tem
return templ_7745c5c3_Err
}
for i, item := range thName {
if item == "AKSI" {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<th scope=\"col\" width=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var2 string
templ_7745c5c3_Var2, templ_7745c5c3_Err = templ.JoinStringErrs(thWidth[i])
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\table\tablev3.templ`, Line: 14, Col: 42}
}
_, 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=\"text-center\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var3 string
templ_7745c5c3_Var3, templ_7745c5c3_Err = templ.JoinStringErrs(item)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\table\tablev3.templ`, Line: 14, Col: 71}
}
_, 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("</th>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
} else {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<th scope=\"col\" width=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var4 string
templ_7745c5c3_Var4, templ_7745c5c3_Err = templ.JoinStringErrs(thWidth[i])
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\table\tablev3.templ`, Line: 16, Col: 42}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var4))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var5 string
templ_7745c5c3_Var5, templ_7745c5c3_Err = templ.JoinStringErrs(item)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\table\tablev3.templ`, Line: 16, Col: 51}
}
_, 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("</th>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<th scope=\"col\" width=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var2 string
templ_7745c5c3_Var2, templ_7745c5c3_Err = templ.JoinStringErrs(thWidth[i])
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\table\tablev3.templ`, Line: 13, Col: 41}
}
_, 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("\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var3 string
templ_7745c5c3_Var3, templ_7745c5c3_Err = templ.JoinStringErrs(item)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\table\tablev3.templ`, Line: 13, Col: 50}
}
_, 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("</th>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</tr></thead> <tbody>")
@@ -134,9 +101,9 @@ func DivEmptyV3() templ.Component {
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Var6 := templ.GetChildren(ctx)
if templ_7745c5c3_Var6 == nil {
templ_7745c5c3_Var6 = templ.NopComponent
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></div>")

2
go.mod
View File

@@ -7,7 +7,6 @@ require (
github.com/fsnotify/fsnotify v1.7.0
github.com/glebarez/go-sqlite v1.22.0
github.com/go-sql-driver/mysql v1.8.1
github.com/golang-jwt/jwt/v5 v5.0.0
github.com/jmoiron/sqlx v1.4.0
github.com/labstack/echo/v4 v4.12.0
github.com/spf13/viper v1.18.2
@@ -37,7 +36,6 @@ require (
github.com/dustin/go-humanize v1.0.1 // indirect
github.com/golang-jwt/jwt v3.2.2+incompatible // indirect
github.com/google/uuid v1.5.0 // indirect
github.com/labstack/echo-jwt/v4 v4.2.0
github.com/labstack/gommon v0.4.2
github.com/mattn/go-colorable v0.1.13 // indirect
github.com/mattn/go-isatty v0.0.20 // indirect

4
go.sum
View File

@@ -18,8 +18,6 @@ github.com/go-sql-driver/mysql v1.8.1 h1:LedoTUt/eveggdHS9qUFC1EFSa8bU2+1pZjSRpv
github.com/go-sql-driver/mysql v1.8.1/go.mod h1:wEBSXgmK//2ZFJyE+qWnIsVGmvmEKlqwuVSjsCm7DZg=
github.com/golang-jwt/jwt v3.2.2+incompatible h1:IfV12K8xAKAnZqdXVzCZ+TOjboZ2keLg81eXfW3O+oY=
github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I=
github.com/golang-jwt/jwt/v5 v5.0.0 h1:1n1XNM9hk7O9mnQoNBGolZvzebBQ7p93ULHRc28XJUE=
github.com/golang-jwt/jwt/v5 v5.0.0/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk=
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/google/pprof v0.0.0-20221118152302-e6195bd50e26 h1:Xim43kblpZXfIBQsbuBVKCudVG457BR2GZFIz3uw3hQ=
@@ -34,8 +32,6 @@ github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
github.com/labstack/echo-jwt/v4 v4.2.0 h1:odSISV9JgcSCuhgQSV/6Io3i7nUmfM/QkBeR5GVJj5c=
github.com/labstack/echo-jwt/v4 v4.2.0/go.mod h1:MA2RqdXdEn4/uEglx0HcUOgQSyBaTh5JcaHIan3biwU=
github.com/labstack/echo/v4 v4.12.0 h1:IKpw49IMryVB2p1a4dzwlhP1O2Tf2E0Ir/450lH+kI0=
github.com/labstack/echo/v4 v4.12.0/go.mod h1:UP9Cr2DJXbOK3Kr9ONYzNowSh7HP0aG0ShAyycHSJvM=
github.com/labstack/gommon v0.4.2 h1:F8qTUNXgG1+6WQmqoUWnz8WiEU60mXVVw0P4ht1WRA0=

View File

@@ -1,209 +0,0 @@
package corporate_handlers
import (
breadcrumadmin "cpone/component/breadcrumbadmin"
navbarmenu "cpone/component/navbar"
"cpone/component/pagination"
sidebaruserprofile "cpone/component/sidebar_user_profile"
"cpone/models"
"cpone/utils"
corporate_dashboardpic "cpone/views/corporate/dashboardpic"
"net/http"
"strconv"
"github.com/a-h/templ"
"github.com/golang-jwt/jwt/v5"
"github.com/labstack/echo/v4"
"go.uber.org/zap"
)
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)
}
type DashboardPicHandler struct {
DashboardPicServices DashboardPicServices
}
func NewDashboardPicHandler(ea DashboardPicServices) *DashboardPicHandler {
return &DashboardPicHandler{
DashboardPicServices: ea,
}
}
func (ea *DashboardPicHandler) HandleShowEmployeeAnalyticScreen(c echo.Context) error {
logger, _ := zap.NewProduction()
listID := utils.GenerateRandomID("listid")
paginationID := utils.GenerateRandomID("paginationid")
userCok := c.Get("user").(*jwt.Token)
claims := userCok.Claims.(jwt.MapClaims)
userID := claims["M_UserID"].(string)
name := claims["M_StaffName"].(string)
position := claims["M_UserGroupDashboard"].(string)
logger.Info("jwt", zap.Any("name", name))
title, err := ea.DashboardPicServices.GetCorporateName(userID)
if err != nil {
defer logger.Sync()
logger.Info("error get corporate name", zap.Any("error", err))
return err
}
convr, _ := strconv.Atoi(userID)
user := models.User{
UserID: convr,
Username: name,
UserFullName: name,
UserPosition: position,
}
dataBreadcrumb, err := ea.DashboardPicServices.GetEmployeeAnalyticBreadcrumb(title)
if err != nil {
defer logger.Sync()
logger.Info("Error breadcrumb dev", zap.Any("error", err))
return err
}
defer logger.Sync()
navbaruser := navbarmenu.NavbarWithLogo(user)
sidbaruser := sidebaruserprofile.Navbaruserprofile(user)
breadcrumb := breadcrumadmin.MainBreadcrumbAdminV1(dataBreadcrumb)
listingData, totalPage, err := ea.DashboardPicServices.ListingDashboardPic("", "", "", 1, 10)
if err != nil {
defer logger.Sync()
logger.Info("Error get listing data", zap.Any("error", err), zap.Any("total", totalPage))
return err
}
listingcomponent := corporate_dashboardpic.ListingData(listingData, listID)
paginationcomponent := pagination.PaginationV3(
totalPage,
1,
"/corp/dashboard_pic/changepage",
paginationID,
"#listID, #paginationID, #searchID, #startdateID, #enddateID",
"#"+paginationID,
"outerHTML", "", "",
corporate_dashboardpic.BeforeRequestContent(),
corporate_dashboardpic.AfterRequestContent(),
)
filtercomponent := corporate_dashboardpic.FilterListing(
"/corp/dashboard_pic/filter",
"input changed delay:500ms",
"#searchID, #startdateID, #enddateID, #listID, #paginationID",
"outerHTML",
"#"+paginationID,
corporate_dashboardpic.BeforeRequestContent(),
corporate_dashboardpic.AfterRequestContent(),
)
content := corporate_dashboardpic.DashboardPic(
listID,
paginationID,
breadcrumb,
filtercomponent,
listingcomponent,
paginationcomponent,
)
css := corporate_dashboardpic.CSSDashboardPIC()
js := corporate_dashboardpic.JSDashboardPIC()
view := corporate_dashboardpic.ShowDashboardPic(title, content, css, js, navbaruser, sidbaruser)
return utils.View(c, view)
}
func (ea *DashboardPicHandler) HandlePagination(c echo.Context) error {
pageparam := c.QueryParam("page")
listID := c.QueryParam("listID")
paginationID := c.QueryParam("paginationID")
search := c.QueryParam("search")
startdate := c.QueryParam("startdate")
enddate := c.QueryParam("enddate")
var retVal []templ.Component
logger, _ := zap.NewProduction()
page, err := strconv.Atoi(pageparam)
if err != nil {
defer logger.Sync()
logger.Info("Error convert page param")
return err
}
listdata, totalPage, err := ea.DashboardPicServices.ListingDashboardPic(search, startdate, enddate, page, 10)
if err != nil {
defer logger.Sync()
logger.Info("Error convert page param")
return err
}
listcomponent := corporate_dashboardpic.ListingData(listdata, listID)
paginationcomponent := pagination.PaginationV3(
totalPage,
page,
"/corp/dashboard_pic/changepage",
paginationID,
"#listID, #paginationID, #searchID, #startdateID, #enddateID",
"#"+paginationID,
"outerHTML", "", "",
corporate_dashboardpic.BeforeRequestContent(),
corporate_dashboardpic.AfterRequestContent(),
)
retVal = append(retVal, listcomponent)
retVal = append(retVal, paginationcomponent)
return utils.ViewMulti(c, retVal)
}
func (ea *DashboardPicHandler) HandleFilter(c echo.Context) error {
logger, _ := zap.NewProduction()
search := c.QueryParam("search")
startdate := c.QueryParam("startdate")
enddate := c.QueryParam("enddate")
listID := c.QueryParam("listID")
paginationID := c.QueryParam("paginationID")
dataList, totalPage, err := ea.DashboardPicServices.ListingDashboardPic(search, startdate, enddate, 1, 5)
if err != nil {
defer logger.Sync()
logger.Info("Error Get Listing Data", zap.Any("error", err))
return err
}
listcomponent := corporate_dashboardpic.ListingData(dataList, listID)
paginationcomponent := pagination.PaginationV3(
totalPage, 1,
"/corp/dashboard_pic/changepage",
paginationID,
"#listID, #paginationID, #searchID, #startdateID, #enddateID",
"#"+paginationID, "outerHTML", "", "",
corporate_dashboardpic.BeforeRequestContent(),
corporate_dashboardpic.AfterRequestContent(),
)
var retval []templ.Component
retval = append(retval, listcomponent)
retval = append(retval, paginationcomponent)
return utils.ViewMulti(c, retval)
}
func (ea *DashboardPicHandler) HandleToDetail(c echo.Context) error {
logger, _ := zap.NewProduction()
id := c.Param("id")
logger.Info("params", zap.Any("id", id))
url := "/corp/dashboard_pic/detail/" + id
c.Response().Header().Set("HX-Redirect", url)
return c.String(http.StatusOK, url)
}

View File

@@ -1,80 +0,0 @@
package corporate_handlers
import (
breadcrumadmin "cpone/component/breadcrumbadmin"
navbarmenu "cpone/component/navbar"
sidebaruserprofile "cpone/component/sidebar_user_profile"
"cpone/models"
"cpone/utils"
corporate_mcudetail "cpone/views/corporate/mcu"
corporate_tabmcudetail "cpone/views/corporate/mcu/mcutab"
"github.com/golang-jwt/jwt/v5"
"github.com/labstack/echo/v4"
"go.uber.org/zap"
)
type McuDetailServices interface {
GetBreadcrumb(id string) (models.BreadCrumbV1, error)
}
type McuDetailHandler struct {
McuDetailServices McuDetailServices
}
func NewMcuDetailHandler(mcud McuDetailServices) *McuDetailHandler {
return &McuDetailHandler{
McuDetailServices: mcud,
}
}
func (mcud *McuDetailHandler) HandlerShowMcuDetailScreen(c echo.Context) error {
logger, _ := zap.NewProduction()
id := c.Param("id")
logger.Info("params", zap.Any("id", id))
userCok := c.Get("user").(*jwt.Token)
claims := userCok.Claims.(jwt.MapClaims)
name := claims["M_StaffName"].(string)
position := claims["M_UserGroupDashboard"].(string)
logger.Info("jwt", zap.Any("name", name))
user := models.User{
UserID: 1,
Username: name,
UserFullName: name,
UserPosition: position,
}
dataBreadcrumb, err := mcud.McuDetailServices.GetBreadcrumb(id)
if err != nil {
defer logger.Sync()
logger.Info("Error breadcrumb corp", zap.Any("error", err))
return err
}
breadcrumb := breadcrumadmin.MainBreadcrumbAdminV1(dataBreadcrumb)
navbaruser := navbarmenu.NavbarWithLogo(user)
sidbaruser := sidebaruserprofile.Navbaruserprofile(user)
content := corporate_mcudetail.McuDetailScreen(
breadcrumb,
corporate_mcudetail.TabViewMcuDetail(id),
)
css := corporate_mcudetail.CSSMcuDetail(
corporate_tabmcudetail.CssKesimpulan(),
)
js := corporate_mcudetail.JSMcuDetail()
view := corporate_mcudetail.ShowMcuDetail(
dataBreadcrumb.Title,
content,
css,
js,
navbaruser,
sidbaruser,
)
return utils.View(c, view)
}

View File

@@ -1,199 +0,0 @@
package mcu_corporate_handlers
import (
"cpone/component/pagination"
"cpone/models"
"cpone/utils"
corporate_mcudetail "cpone/views/corporate/mcu/mcutab"
"strconv"
"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)
}
type TabDaftarPesertaHandlers struct {
TabDaftarPesertaServices TabDaftarPesertaServices
}
func NewTabDaftarPesertaHandlers(tdp TabDaftarPesertaServices) *TabDaftarPesertaHandlers {
return &TabDaftarPesertaHandlers{
TabDaftarPesertaServices: tdp,
}
}
func (tdp *TabDaftarPesertaHandlers) HandleShowTabDaftarPeserta(c echo.Context) error {
logger, _ := zap.NewProduction()
title := "Daftar Report"
tableID := utils.GenerateRandomID("tableid")
paginationID := utils.GenerateRandomID("paginationID")
dialogReportID := utils.GenerateRandomID("dialogreportid")
dialogReportBodyID := utils.GenerateRandomID("dialogreportbodyid")
id := c.Param("id")
logger.Info("Params", zap.Any("id", id))
dataTable, totalPage, err := tdp.TabDaftarPesertaServices.GetListMcuDaftarPeserta(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",
"outerHTML",
)
pagination := pagination.PaginationV3(
totalPage,
1,
"/corp/dashboard_pic/detail/"+id+"/tabdaftarpeserta/changepage",
paginationID,
"#tableID, #paginationID, #loading-parent, #loading-child, #loading-spinner, #loadingcontent, #dialogReportID, #dialogReportBodyID",
"#contentlayout",
"outerHTML", "", "",
corporate_mcudetail.BeforeRequestContent(),
corporate_mcudetail.AfterRequestContent(),
)
clayout := corporate_mcudetail.ContentLayout(
table,
pagination,
)
tabData := []models.TabViewReportMcu{}
tabview := corporate_mcudetail.TabReportView(tabData)
bodymodal := corporate_mcudetail.ModalBody(
dialogReportBodyID,
tabview,
corporate_mcudetail.JsShowModal(""),
)
closemodal := corporate_mcudetail.ModalClose(
"/corp/dashboard_pic/detail/"+id+"/tabdaftarpeserta/closereport",
"#"+dialogReportBodyID,
"outerHTML",
"#"+dialogReportID,
)
modaldialog := corporate_mcudetail.DialogReport(
"",
"/corp/dashboard_pic/detail/"+id+"/tabdaftarpeserta/dialogreport",
"#"+dialogReportBodyID,
"outerHTML",
"#tableID, #paginationID, #dialogReportID, #dialogReportBodyID"+paginationID,
dialogReportID,
title,
bodymodal,
closemodal,
)
content := corporate_mcudetail.TabDaftarPesertaScreen(
tableID,
paginationID,
dialogReportID,
dialogReportBodyID,
clayout,
modaldialog,
)
// css := corporate_mcudetail.CSSTabDaftarPeserta()
// js := corporate_mcudetail.JsTabDaftarPeserta()
// view := corporate_mcudetail.ShowTabDafterPeserta(
// title,
// content,
// css,
// js,
// )
return utils.View(c, content)
}
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")
id := c.Param("id")
// var retval []templ.Component
page, err := strconv.Atoi(pageparam)
if err != nil {
return err
}
tableData, totalPage, err := tdp.TabDaftarPesertaServices.GetListMcuDaftarPeserta(id, page, 10)
if err != nil {
return err
}
table := corporate_mcudetail.TableDaftarPeserta(
tableData,
tableID,
"/corp/dashboard_pic/detail/"+id+"/tabdaftarpeserta/openreport",
"#"+dialogReportBodyID,
"#tableID, #paginationID, #dialogReportID, #dialogReportBodyID",
"outerHTML",
)
pagination := pagination.PaginationV3(
totalPage,
page,
"/corp/dashboard_pic/detail/"+id+"/tabdaftarpeserta/changepage",
paginationID,
"#tableID, #paginationID, #loading-parent, #loading-child, #loading-spinner, #loadingcontent, #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)
}
func (tdp *TabDaftarPesertaHandlers) HandleOpenReportDialog(c echo.Context) error {
logger, _ := zap.NewProduction()
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)
if err != nil {
tab := corporate_mcudetail.TabReportView([]models.TabViewReportMcu{})
mod := corporate_mcudetail.ModalBody(
dialogReportBodyID,
tab,
corporate_mcudetail.JsShowModal(""),
)
return utils.View(c, mod)
}
tabcomponent := corporate_mcudetail.TabReportView(tabData)
modalbody := corporate_mcudetail.ModalBody(
dialogReportBodyID,
tabcomponent,
corporate_mcudetail.JsShowModal("#"+dialogReportID),
)
return utils.View(c, modalbody)
}

View File

@@ -1,79 +0,0 @@
package mcu_corporate_handlers
import (
"cpone/component/chart"
"cpone/models"
"cpone/utils"
corporate_mcudetail "cpone/views/corporate/mcu/mcutab"
"encoding/json"
"github.com/a-h/templ"
"github.com/labstack/echo/v4"
"go.uber.org/zap"
)
type TabKelainanFisikServices interface {
GetKelainanFisikBMI(mcuID string) (models.Piechart, error)
GetKelainanFisikHipertensi(mcuID string) (models.Piechart, error)
}
type TabKelainanFisikHandler struct {
TabKelainanFisikServices TabKelainanFisikServices
}
func NewTabKelainanFisikHandler(tkf TabKelainanFisikServices) *TabKelainanFisikHandler {
return &TabKelainanFisikHandler{
TabKelainanFisikServices: tkf,
}
}
func (tkf *TabKelainanFisikHandler) HandleShowTabKelainanFisik(c echo.Context) error {
logger, _ := zap.NewProduction()
logger.Info("Tab Kelainan Fisik")
id := c.Param("id")
logger.Info("Params", zap.Any("id", id))
bmi, err := tkf.TabKelainanFisikServices.GetKelainanFisikBMI(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"),
}
content := corporate_mcudetail.Tabkelainanfisik(
chartsxs,
chartsmd,
chartslg,
)
return utils.View(c, content)
}

View File

@@ -1,78 +0,0 @@
package mcu_corporate_handlers
import (
"cpone/component/chart"
"cpone/models"
"cpone/utils"
corporate_mcudetail "cpone/views/corporate/mcu/mcutab"
"encoding/json"
"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)
}
type TabKelainanGlobalHandler struct {
TabKelainanGlobalServices TabKelainanGlobalServices
}
func NewTabKelainanGlobalHandler(tkg TabKelainanGlobalServices) *TabKelainanGlobalHandler {
return &TabKelainanGlobalHandler{
TabKelainanGlobalServices: tkg,
}
}
func (tkg *TabKelainanGlobalHandler) HandleShowTabKelainanGlobal(c echo.Context) error {
logger, _ := zap.NewProduction()
id := c.Param("id")
logger.Info("params", zap.Any("id", id))
kelmcu, err := tkg.TabKelainanGlobalServices.GetKelainanGlobalMCU(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"),
}
content := corporate_mcudetail.TabKelainanGlobal(
chartsxs,
chartsmd,
chartslg,
)
return utils.View(c, content)
}

View File

@@ -1,130 +0,0 @@
package mcu_corporate_handlers
import (
"cpone/component/chart"
"cpone/models"
"cpone/utils"
corporate_mcudetail "cpone/views/corporate/mcu/mcutab"
"encoding/json"
"github.com/a-h/templ"
"github.com/labstack/echo/v4"
)
type TabKelainanLabServices interface {
GetDataPresentaseKelainanLab(mcuID string) (models.Barchart, error)
GetHematologi(mcuID string) (models.BarchartV2, error)
GetUrinalisa(mcuID string) (models.BarchartV2, error)
GetGangguanFungsiHati(mcuID string) (models.BarchartV2, error)
GetGangguanMetabolismeLemak(mcuID string) (models.BarchartV2, error)
GetPeningkatanGlukosa(mcuID string) (models.BarchartV2, error)
}
type TabKelainanLabHandler struct {
TabKelainanLabServices TabKelainanLabServices
}
func NewTabKelainanLabHandler(tkl TabKelainanLabServices) *TabKelainanLabHandler {
return &TabKelainanLabHandler{
TabKelainanLabServices: tkl,
}
}
func (tkl *TabKelainanLabHandler) HandleShowTabKelainanLab(c echo.Context) error {
id := c.Param("id")
datapre, err := tkl.TabKelainanLabServices.GetDataPresentaseKelainanLab(id)
if err != nil {
return err
}
hematologi, err := tkl.TabKelainanLabServices.GetHematologi(id)
if err != nil {
return err
}
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"),
}
content := corporate_mcudetail.TabKelainanLab(
chart.ShowChartFixed("dataprelg", string(dataprejson), "1000px", "450px"),
chartsxs,
chartsmd,
chartslg,
)
return utils.View(c, content)
}

View File

@@ -1,74 +0,0 @@
package mcu_corporate_handlers
import (
"cpone/component/chart"
"cpone/models"
"cpone/utils"
corporate_mcudetail "cpone/views/corporate/mcu/mcutab"
"encoding/json"
"github.com/a-h/templ"
"github.com/labstack/echo/v4"
)
type TabKelainanNonLabServices interface {
GetDataKelNonLab(mcuID string) (models.Barchart, error)
GetThoraxPA(mcuID string) (models.BarchartV2, error)
}
type TabKelainanNonLabHandler struct {
TabKelainanNonLabServices TabKelainanNonLabServices
}
func NewTabKelainanNonLabHandler(tknl TabKelainanNonLabServices) *TabKelainanNonLabHandler {
return &TabKelainanNonLabHandler{
TabKelainanNonLabServices: tknl,
}
}
func (tknl *TabKelainanNonLabHandler) HandleShowTabKelainanNonLab(c echo.Context) error {
id := c.Param("id")
datapre, err := tknl.TabKelainanNonLabServices.GetDataKelNonLab(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"),
}
content := corporate_mcudetail.TabKelainanNonLab(
chartsxs,
chartsmd,
chartslg,
)
return utils.View(c, content)
}

View File

@@ -1,93 +0,0 @@
package mcu_corporate_handlers
import (
"cpone/component/chart"
"cpone/models"
"cpone/utils"
corporate_mcudetail "cpone/views/corporate/mcu/mcutab"
"encoding/json"
"github.com/a-h/templ"
"github.com/labstack/echo/v4"
"go.uber.org/zap"
)
type TabKepersertaanServices interface {
GetTotalKepesertaanMCU(mcuID string) (models.Piechart, error)
GetKepesertaanByGender(mcuID string) (models.Piechart, error)
GetKepesertaanByUmur(mcuID string) (models.Piechart, error)
}
type TabKepersertaanHandler struct {
TabKepersertaanServices TabKepersertaanServices
}
func NewTabKepersertaanHandler(tkh TabKepersertaanServices) *TabKepersertaanHandler {
return &TabKepersertaanHandler{
TabKepersertaanServices: tkh,
}
}
func (tkh *TabKepersertaanHandler) HandleShowTabKepesertaan(c echo.Context) error {
logger, _ := zap.NewProduction()
logger.Info("Tab Kepesertaan")
id := c.Param("id")
logger.Info("Params", zap.Any("id", id))
peserta, err := tkh.TabKepersertaanServices.GetTotalKepesertaanMCU(id)
if err != nil {
return err
}
gender, err := tkh.TabKepersertaanServices.GetKepesertaanByGender(id)
if err != nil {
return err
}
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"),
}
content := corporate_mcudetail.TabKepesertaan(
chartsxs,
chartsmd,
chartslg,
)
return utils.View(c, content)
}

View File

@@ -1,76 +0,0 @@
package mcu_corporate_handlers
import (
"cpone/models"
"cpone/utils"
corporate_mcudetail "cpone/views/corporate/mcu/mcutab"
"fmt"
"github.com/labstack/echo/v4"
"go.uber.org/zap"
)
type TabKesimpulanServices interface {
GetListKesimpulanLab(id string) ([]models.ModelKesimpulanLab, error)
GetListKesimpulanNonLab(id string) ([]models.ModelKesimpulanLab, error)
GetListKesimpulanFisik(id string) ([]models.ModelKesimpulanLab, error)
}
type TabKesimpulanHandler struct {
TabKesimpulanServices TabKesimpulanServices
}
func NewTabKesimpulanHandler(us TabKesimpulanServices) *TabKesimpulanHandler {
return &TabKesimpulanHandler{
TabKesimpulanServices: us,
}
}
func (tkh *TabKesimpulanHandler) HandleShowTabKesimpulanScreen(c echo.Context) error {
logger, _ := zap.NewProduction()
tableID := utils.GenerateRandomID("tablebody")
id := c.Param("id")
dataLab, err := tkh.TabKesimpulanServices.GetListKesimpulanLab(id)
if err != nil {
defer logger.Sync()
logger.Info("ERROR GET LIST LAB",
zap.Any("error", err),
)
fmt.Println(dataLab)
return err
}
tableComponentLab := corporate_mcudetail.CardTableKesimpulan("3 Kelainan Pemeriksaan Lab terbesar :", dataLab, tableID)
dataNonLab, err := tkh.TabKesimpulanServices.GetListKesimpulanNonLab(id)
if err != nil {
defer logger.Sync()
logger.Info("ERROR GET LIST NON LAB",
zap.Any("error", err),
)
fmt.Println(dataNonLab)
return err
}
tableComponentNonLab := corporate_mcudetail.CardTableKesimpulan("3 Kelainan Pemeriksaan Non Lab terbesar :", dataNonLab, tableID)
dataFisik, err := tkh.TabKesimpulanServices.GetListKesimpulanFisik(id)
if err != nil {
defer logger.Sync()
logger.Info("ERROR GET LIST FISIK",
zap.Any("error", err),
)
fmt.Println(dataFisik)
return err
}
tableComponentFisik := corporate_mcudetail.CardTableKesimpulan("3 Kelainan Pemeriksaan Fisik terbesar :", dataFisik, tableID)
content := corporate_mcudetail.MainKesimpulan(
tableID,
tableComponentLab,
tableComponentNonLab,
tableComponentFisik,
)
return utils.View(c, content)
}

View File

@@ -1,129 +0,0 @@
package mcu_corporate_handlers
import (
"cpone/component/pagination"
"cpone/models"
"cpone/utils"
corporate_mcudetail "cpone/views/corporate/mcu/mcutab"
"strconv"
"github.com/labstack/echo/v4"
"go.uber.org/zap"
)
type TabKeuanganServices interface {
GetTotalOrderKeuangan(mcuID string) (int, error)
GetTotalCardData(mcuID string) (models.TotalBillCard, error)
GetListingDataKeuangan(mcuID string, currentpage int, rowperpage int) ([]models.KeuanganModel, int, error)
}
type TabKeuanganHandler struct {
TabKeuanganServices TabKeuanganServices
}
func NewTabKeuanganHandler(tk TabKeuanganServices) *TabKeuanganHandler {
return &TabKeuanganHandler{
TabKeuanganServices: tk,
}
}
func (tk *TabKeuanganHandler) HandleShowTabKeuangan(c echo.Context) error {
logger, _ := zap.NewProduction()
logger.Info("handler keuangan")
tableID := utils.GenerateRandomID("tableID")
paginationID := utils.GenerateRandomID("paginationID")
id := c.Param("id")
logger.Info("Params", zap.Any("id", id))
dataTable, totalPage, err := tk.TabKeuanganServices.GetListingDataKeuangan(id, 1, 10)
if err != nil {
defer logger.Sync()
logger.Info("error get list data keuangan", zap.Any("error", err))
return err
}
tablecompo := corporate_mcudetail.TableKeuangan(dataTable, tableID)
pagination := pagination.PaginationV3(
totalPage,
1,
"/corp/dashboard_pic/detail/"+id+"/tabkeuangan/changepage",
paginationID,
"#tableID, #paginationID, #loading-parent, #loading-child, #loading-spinner, #loadingcontent",
"#tabdanpagi",
"outerHTML", "", "",
corporate_mcudetail.BeforeRequestContent(),
corporate_mcudetail.AfterRequestContent(),
)
totalOrder, err := tk.TabKeuanganServices.GetTotalOrderKeuangan(id)
if err != nil {
defer logger.Sync()
logger.Info("error get total order keuangan", zap.Any("error", err))
return err
}
totalBill, err := tk.TabKeuanganServices.GetTotalCardData(id)
if err != nil {
defer logger.Sync()
logger.Info("error get total bill keuangan", zap.Any("error", err))
return err
}
totalOrderF := utils.FormatRibuan(int(totalOrder))
totalTagihan := utils.FormatRibuan(int(totalBill.TotalTagihan))
totalPelunasan := utils.FormatRibuan(int(totalBill.TotalPelunasan))
totalHutang := utils.FormatRibuan(int(totalBill.TotalHutang))
content := corporate_mcudetail.TabKeuanganScreen(
tableID,
paginationID,
corporate_mcudetail.KeuanganCard(
totalOrderF,
totalTagihan,
totalPelunasan,
totalHutang,
),
corporate_mcudetail.TableAndPagination(
tablecompo,
pagination,
),
)
return utils.View(c, content)
}
func (tk *TabKeuanganHandler) HandleChangePage(c echo.Context) error {
pageparam := c.QueryParam("page")
tableID := c.QueryParam("tableID")
paginationID := c.QueryParam("paginationID")
id := c.Param("id")
page, err := strconv.Atoi(pageparam)
if err != nil {
return err
}
tableData, totalPage, err := tk.TabKeuanganServices.GetListingDataKeuangan(id, page, 10)
if err != nil {
return err
}
tablecomp := corporate_mcudetail.TableKeuangan(tableData, tableID)
pagination := pagination.PaginationV3(
totalPage,
page,
"/corp/dashboard_pic/detail/"+id+"/tabkeuangan/changepage",
paginationID,
"#tableID, #paginationID, #loading-parent, #loading-child, #loading-spinner, #loadingcontent",
"#tabdanpagi",
"outerHTML", "", "",
corporate_mcudetail.BeforeRequestContent(),
corporate_mcudetail.AfterRequestContent(),
)
tabdanpagi := corporate_mcudetail.TableAndPagination(tablecomp, pagination)
return utils.View(c, tabdanpagi)
}

View File

@@ -1,26 +1,13 @@
package corporate_handlers
import (
breadcrumadmin "cpone/component/breadcrumbadmin"
navbarmenu "cpone/component/navbar"
"cpone/component/pagination"
sidebaruserprofile "cpone/component/sidebar_user_profile"
"cpone/models"
"cpone/utils"
corporate_patient "cpone/views/corporate/patient"
"strconv"
"github.com/golang-jwt/jwt/v5"
"github.com/labstack/echo/v4"
"go.uber.org/zap"
)
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)
}
func NewPatientHandler(us PatientService) *PatientHandler {
@@ -33,210 +20,7 @@ type PatientHandler struct {
PatientService PatientService
}
func (ph *PatientHandler) LoadLocalData(c echo.Context) error {
logger, _ := zap.NewProduction()
listID := c.QueryParam("listID")
paginationID := c.QueryParam("paginationID")
dialogID := c.QueryParam("dialogID")
dialogBodyID := c.QueryParam("dialogBodyID")
userEmail := c.QueryParam("userEmail")
logger.Info("params", zap.Any("email", userEmail))
title, err := ph.PatientService.GetPatientData(userEmail)
if err != nil {
defer logger.Sync()
logger.Info("Error get user", zap.Any("error", err))
return err
}
dataBreadcrumb, err := ph.PatientService.GetDashboardPatientBreadcrumb(title)
if err != nil {
defer logger.Sync()
logger.Info("Error breadcrumb", zap.Any("error", err))
return err
}
defer logger.Sync()
breadcrumb := breadcrumadmin.MainBreadcrumbAdminV1(dataBreadcrumb)
listingdata, totalPage, err := ph.PatientService.GetListtingData(userEmail, 1, 10)
if err != nil {
defer logger.Sync()
logger.Info("error get listing data", zap.Any("error", err), zap.Any("total", totalPage))
return err
}
listingcomponent := corporate_patient.ListingData(listingdata,
listID,
"/corp/dashboard_pat/open",
"#"+dialogBodyID,
"#listID, #paginationID, #dialogID, #dialogBodyID, #userEmail",
"outerHTML",
)
paginationcomponent := pagination.PaginationV3(
totalPage,
1,
"/corp/dashboard_pat/changepage",
paginationID,
"#listID, #paginationID, #loading-parent, #loading-child, #loading-spinner, #loadingcontent, #dialogID, #dialogBodyID, #userEmail",
"#contentlayout",
"outerHTML", "", "",
corporate_patient.BeforeRequestContent(),
corporate_patient.AfterRequestContent(),
)
tabData := []models.TabViewReportMcu{}
tabcomponent := corporate_patient.TabReportView(tabData)
bodyModal := corporate_patient.ModalBody(
dialogBodyID,
tabcomponent,
corporate_patient.JsShowModal(""),
)
bodyClose := corporate_patient.ModalClose(
"/corp/dashboard_pat/closemodal",
"#"+dialogBodyID,
"outerHTML",
"#"+dialogID,
)
modalDialog := corporate_patient.DialogReport(
"",
"/corp/dashboard_pat/dialog",
"#"+dialogBodyID,
"outerHTML",
"#listID, #paginationID, #dialogID, #userEmail, #dialogBodyID"+paginationID,
dialogID,
title,
bodyModal,
bodyClose,
)
content := corporate_patient.ContentP(listingcomponent, paginationcomponent)
view := corporate_patient.ContentPage(
breadcrumb,
content,
modalDialog,
)
return utils.View(c, view)
}
func (ph *PatientHandler) HandleShowPatient(c echo.Context) error {
logger, _ := zap.NewProduction()
listID := utils.GenerateRandomID("listid")
paginationID := utils.GenerateRandomID("paginationid")
dialogID := utils.GenerateRandomID("dialogid")
dialogBodyID := utils.GenerateRandomID("dialogbodyid")
userCok := c.Get("user").(*jwt.Token)
claims := userCok.Claims.(jwt.MapClaims)
name := claims["M_StaffName"].(string)
position := claims["M_UserGroupDashboard"].(string)
logger.Info("jwt", zap.Any("name", name))
user := models.User{
UserID: 1,
Username: name,
UserFullName: name,
UserPosition: position,
}
navbaruser := navbarmenu.NavbarWithLogo(user)
sidbaruser := sidebaruserprofile.Navbaruserprofile(user)
content := corporate_patient.DashboardPat(
listID,
paginationID,
dialogID,
dialogBodyID,
)
css := corporate_patient.CSSDashboardPat()
js := corporate_patient.JSDashboardPat()
view := corporate_patient.ShowDashboardPat("Dashboard Pasien", content, css, js, navbaruser, sidbaruser)
return utils.View(c, view)
}
func (ph *PatientHandler) HandleChangePage(c echo.Context) error {
logger, _ := zap.NewProduction()
pageparam := c.QueryParam("page")
listID := c.QueryParam("listID")
paginationID := c.QueryParam("paginationID")
dialogBodyID := c.QueryParam("dialogBodyID")
userEmail := c.QueryParam("userEmail")
logger.Info("params", zap.Any("userEmail", userEmail))
// var retval []templ.Component
page, err := strconv.Atoi(pageparam)
if err != nil {
defer logger.Sync()
logger.Info("error convert page param")
return err
}
listData, totalPage, err := ph.PatientService.GetListtingData(userEmail, page, 10)
if err != nil {
defer logger.Sync()
logger.Info("error get data listing")
return err
}
listcomponent := corporate_patient.ListingData(listData,
listID,
"/corp/dashboard_pat/open",
"#"+dialogBodyID,
"#listID, #paginationID, #dialogID, #dialogBodyID, #userEmail",
"outerHTML",
)
paginationcomponent := pagination.PaginationV3(
totalPage,
page,
"/corp/dashboard_pat/changepage",
paginationID,
"#listID, #paginationID, #loading-parent, #loading-child, #loading-spinner, #loadingcontent, #dialogID, #dialogBodyID, #userEmail, #currPage"+paginationID,
"#contentlayout",
"outerHTML", "", "",
corporate_patient.BeforeRequestContent(),
corporate_patient.AfterRequestContent(),
)
// retval = append(retval, listcomponent)
// retval = append(retval, paginationcomponent)
// return utils.ViewMulti(c, retval)
content := corporate_patient.ContentP(listcomponent, paginationcomponent)
return utils.View(c, content)
}
func (ph *PatientHandler) HandleOpenReport(c echo.Context) error {
logger, _ := zap.NewProduction()
id := c.QueryParam("id")
dialogID := c.QueryParam("dialogID")
dialogBodyID := c.QueryParam("dialogBodyID")
logger.Info("params", zap.Any("id", id))
tabData, err := ph.PatientService.GetReportMcu(id)
if err != nil {
tab := corporate_patient.TabReportView([]models.TabViewReportMcu{})
mod := corporate_patient.ModalBody(
dialogBodyID,
tab,
corporate_patient.JsShowModal(""),
)
return utils.View(c, mod)
}
tabcomponent := corporate_patient.TabReportView(tabData)
modalBody := corporate_patient.ModalBody(
dialogBodyID,
tabcomponent,
corporate_patient.JsShowModal("#"+dialogID),
)
return utils.View(c, modalBody)
func (uh *PatientHandler) ShowPatient(c echo.Context) error {
helo := corporate_patient.Show()
return utils.View(c, helo)
}

View File

@@ -1,72 +0,0 @@
package dev_handlers
import (
breadcrumadmin "cpone/component/breadcrumbadmin"
navbarmenu "cpone/component/navbar"
sidebaruserprofile "cpone/component/sidebar_user_profile"
"cpone/models"
"cpone/services"
"cpone/utils"
dev_detailmcu "cpone/views/dev/mcu"
"github.com/labstack/echo/v4"
"go.uber.org/zap"
)
type DetailMcuServices interface {
GetBreadcrumb(title string) (models.BreadCrumbV1, error)
}
type DetailMcuHandler struct {
DetailMcuServices DetailMcuServices
}
func NewDetailMcuHandler(dmcu DetailMcuServices) *DetailMcuHandler {
return &DetailMcuHandler{
DetailMcuServices: dmcu,
}
}
func (dmcu *DetailMcuHandler) HandleShowDetailMcuScreen(c echo.Context) error {
logger, _ := zap.NewProduction()
title := "PT. Sadhana Abiyasa Sampoerna"
id := c.Param("id")
logger.Info("params", zap.Any("id", id))
user, err := services.GetUserLogin()
if err != nil {
defer logger.Sync()
logger.Info("Error get user dev", zap.Any("error", err))
return err
}
dataBreadcrumb, err := dmcu.DetailMcuServices.GetBreadcrumb(title)
if err != nil {
defer logger.Sync()
logger.Info("Error breadcrumb dev", zap.Any("error", err))
return err
}
breadcrumb := breadcrumadmin.MainBreadcrumbAdminV1(dataBreadcrumb)
navbaruser := navbarmenu.NavbarWithLogo(user)
sidbaruser := sidebaruserprofile.Navbaruserprofile(user)
content := dev_detailmcu.DetailMcuScreen(
breadcrumb,
dev_detailmcu.TabViewDetailMcu(id),
)
css := dev_detailmcu.CSSDetailMcu()
js := dev_detailmcu.JSDetailMcu()
view := dev_detailmcu.ShowDetailMcu(
title,
content,
css,
js,
navbaruser,
sidbaruser,
)
return utils.View(c, view)
}

View File

@@ -1,192 +0,0 @@
package dev_handlers
import (
breadcrumadmin "cpone/component/breadcrumbadmin"
navbarmenu "cpone/component/navbar"
"cpone/component/pagination"
sidebaruserprofile "cpone/component/sidebar_user_profile"
"cpone/models"
"cpone/services"
"cpone/utils"
dev_employeeanalytic "cpone/views/dev/employeeanalytic"
"strconv"
"github.com/a-h/templ"
"github.com/labstack/echo/v4"
"go.uber.org/zap"
)
type EmployeeAnalyticServices interface {
GetEmployeeAnalyticBreadcrumb(title string) (models.BreadCrumbV1, error)
DummyDataTest() ([]models.DashboardPic, error)
ListingEmployeeAnalytic(search string, startdate string, enddate string, currentpage int, rowperpage int) ([]models.DashboardPic, int, error)
}
type EmployeeAnalyticHandler struct {
EmployeeAnalyticServices EmployeeAnalyticServices
}
func NewEmployeeAnalyticHandler(ea EmployeeAnalyticServices) *EmployeeAnalyticHandler {
return &EmployeeAnalyticHandler{
EmployeeAnalyticServices: ea,
}
}
func (ea *EmployeeAnalyticHandler) HandleShowEmployeeAnalyticScreen(c echo.Context) error {
logger, _ := zap.NewProduction()
title := "PT. Sadhana Abiyasa Sampoerna"
listID := utils.GenerateRandomID("listid")
paginationID := utils.GenerateRandomID("paginationid")
user, err := services.GetUserLogin()
if err != nil {
defer logger.Sync()
logger.Info("Error get user dev", zap.Any("error", err))
return err
}
dataBreadcrumb, err := ea.EmployeeAnalyticServices.GetEmployeeAnalyticBreadcrumb(title)
if err != nil {
defer logger.Sync()
logger.Info("Error breadcrumb dev", zap.Any("error", err))
return err
}
defer logger.Sync()
navbaruser := navbarmenu.NavbarWithLogo(user)
sidbaruser := sidebaruserprofile.Navbaruserprofile(user)
breadcrumb := breadcrumadmin.MainBreadcrumbAdminV1(dataBreadcrumb)
listingData, totalPage, err := ea.EmployeeAnalyticServices.ListingEmployeeAnalytic("", "", "", 1, 5)
if err != nil {
defer logger.Sync()
logger.Info("Error get listing data", zap.Any("error", err), zap.Any("total", totalPage))
return err
}
listingcomponent := dev_employeeanalytic.ListingData(listingData, listID)
paginationcomponent := pagination.PaginationV3(
totalPage,
1,
"/dev/dashboard_pic/changepage",
paginationID,
"#listID, #paginationID, #searchID, #startdateID, #enddateID",
"#"+paginationID,
"outerHTML", "", "",
dev_employeeanalytic.BeforeRequestContent(),
dev_employeeanalytic.AfterRequestContent(),
)
filtercomponent := dev_employeeanalytic.FilterListing(
"/dev/dashboard_pic/filter",
"input changed delay:500ms",
"#searchID, #startdateID, #enddateID, #listID, #paginationID",
"outerHTML",
"#"+paginationID,
dev_employeeanalytic.BeforeRequestContent(),
dev_employeeanalytic.AfterRequestContent(),
)
content := dev_employeeanalytic.EmployeeAnalyticScreen(
listID,
paginationID,
breadcrumb,
filtercomponent,
listingcomponent,
paginationcomponent,
)
css := dev_employeeanalytic.CSSEmployeeAnalytic()
js := dev_employeeanalytic.JSEmployeeAnalytic()
view := dev_employeeanalytic.ShowEmployeeAnalytic(title, content, css, js, navbaruser, sidbaruser)
return utils.View(c, view)
}
func (ea *EmployeeAnalyticHandler) HandlePagination(c echo.Context) error {
pageparam := c.QueryParam("page")
listID := c.QueryParam("listID")
paginationID := c.QueryParam("paginationID")
search := c.QueryParam("search")
startdate := c.QueryParam("startdate")
enddate := c.QueryParam("enddate")
var retVal []templ.Component
logger, _ := zap.NewProduction()
page, err := strconv.Atoi(pageparam)
if err != nil {
defer logger.Sync()
logger.Info("Error convert page param")
return err
}
listdata, totalPage, err := ea.EmployeeAnalyticServices.ListingEmployeeAnalytic(search, startdate, enddate, page, 5)
if err != nil {
defer logger.Sync()
logger.Info("Error convert page param")
return err
}
listcomponent := dev_employeeanalytic.ListingData(listdata, listID)
paginationcomponent := pagination.PaginationV3(
totalPage,
page,
"/dev/dashboard_pic/changepage",
paginationID,
"#listID, #paginationID, #searchID, #startdateID, #enddateID",
"#"+paginationID,
"outerHTML", "", "",
dev_employeeanalytic.BeforeRequestContent(),
dev_employeeanalytic.AfterRequestContent(),
)
retVal = append(retVal, listcomponent)
retVal = append(retVal, paginationcomponent)
return utils.ViewMulti(c, retVal)
}
func (ea *EmployeeAnalyticHandler) HandleFilter(c echo.Context) error {
logger, _ := zap.NewProduction()
search := c.QueryParam("search")
startdate := c.QueryParam("startdate")
enddate := c.QueryParam("enddate")
listID := c.QueryParam("listID")
paginationID := c.QueryParam("paginationID")
dataList, totalPage, err := ea.EmployeeAnalyticServices.ListingEmployeeAnalytic(search, startdate, enddate, 1, 5)
if err != nil {
defer logger.Sync()
logger.Info("Error Get Listing Data", zap.Any("error", err))
return err
}
listcomponent := dev_employeeanalytic.ListingData(dataList, listID)
paginationcomponent := pagination.PaginationV3(
totalPage, 1,
"/dev/dashboard_pic/changepage",
paginationID,
"#listID, #paginationID, #searchID, #startdateID, #enddateID",
"#"+paginationID, "outerHTML", "", "",
dev_employeeanalytic.BeforeRequestContent(),
dev_employeeanalytic.AfterRequestContent(),
)
var retval []templ.Component
retval = append(retval, listcomponent)
retval = append(retval, paginationcomponent)
return utils.ViewMulti(c, retval)
}
func (ea *EmployeeAnalyticHandler) HandleIntoDetail(c echo.Context) error {
logger, _ := zap.NewProduction()
id := c.Param("id")
logger.Info("params", zap.Any("id", id))
url := "/dev/detail/" + id
c.Response().Header().Set("HX-Redirect", url)
return nil
}

View File

@@ -1,88 +0,0 @@
package dev_handlers
import (
"cpone/models"
"cpone/utils"
dev_kesimpulan "cpone/views/dev/kesimpulan"
"fmt"
"github.com/labstack/echo/v4"
"go.uber.org/zap"
)
type KesimpulanService interface {
GetListKesimpulanLab(id string) ([]models.ModelKesimpulanLab, error)
GetListKesimpulanNonLab(id string) ([]models.ModelKesimpulanLab, error)
GetListKesimpulanFisik(id string) ([]models.ModelKesimpulanLab, error)
}
func NewKesimpulanHandler(us KesimpulanService) *KesimpulanHandler {
return &KesimpulanHandler{
KesimpulanService: us,
}
}
type KesimpulanHandler struct {
KesimpulanService KesimpulanService
}
func (h *KesimpulanHandler) HandleShowKesimpulanScreen(c echo.Context) error {
logger, _ := zap.NewProduction()
tableID := utils.GenerateRandomID("tablebody")
id := c.Param("id")
// table component
dataLab, err := h.KesimpulanService.GetListKesimpulanLab(id)
if err != nil {
defer logger.Sync()
logger.Info("ERROR GET LIST LAB",
zap.Any("error", err),
)
fmt.Println(dataLab)
return err
}
logger.Info("CEK DATA",
zap.Any("data lab", dataLab))
tableComponentLab := dev_kesimpulan.CardTableKesimpulan("3 Kelainan Pemeriksaan Lab terbesar :", dataLab, tableID)
// table component non lab
dataNonLab, err := h.KesimpulanService.GetListKesimpulanNonLab(id)
if err != nil {
defer logger.Sync()
logger.Info("ERROR GET LIST NON LAB",
zap.Any("error", err),
)
fmt.Println(dataNonLab)
return err
}
logger.Info("CEK DATA",
zap.Any("data lab", dataNonLab))
tableComponentNonLab := dev_kesimpulan.CardTableKesimpulan("3 Kelainan Pemeriksaan Non Lab terbesar :", dataNonLab, tableID)
// table component fisik
dataFisik, err := h.KesimpulanService.GetListKesimpulanFisik(id)
if err != nil {
defer logger.Sync()
logger.Info("ERROR GET LIST FISIK",
zap.Any("error", err),
)
fmt.Println(dataFisik)
return err
}
logger.Info("CEK DATA",
zap.Any("data lab", dataFisik))
tableComponentFisik := dev_kesimpulan.CardTableKesimpulan("3 Kelainan Pemeriksaan Fisik terbesar :", dataFisik, tableID)
content := dev_kesimpulan.MainKesimpulan(tableID,
tableComponentLab,
tableComponentNonLab,
tableComponentFisik)
view := dev_kesimpulan.ShowKesimpulan("KESIMPULAN", content, dev_kesimpulan.CssKesimpulan(), dev_kesimpulan.JsKesimpulan())
return utils.View(c, view)
}

View File

@@ -1,66 +0,0 @@
package dev_handlers
import (
"cpone/models"
"cpone/utils"
dev_mcudaftarpeserta "cpone/views/dev/mcu/daftarpeserta"
"fmt"
"github.com/labstack/echo/v4"
"go.uber.org/zap"
)
type McuDaftarPesertaServices interface {
GetListMcuDaftarPeserta(id string, currentPage int, rowPerPage int) ([]models.ModelMcuDaftarPeserta, int, error)
}
type McuDaftarPesertaHandler struct {
McuDaftarPesertaServices McuDaftarPesertaServices
}
func NewMcuDaftarPeserta(mdp McuDaftarPesertaServices) *McuDaftarPesertaHandler {
return &McuDaftarPesertaHandler{
McuDaftarPesertaServices: mdp,
}
}
func (mdp *McuDaftarPesertaHandler) HandleGetMcuDaftarPeserta(c echo.Context) error {
logger, _ := zap.NewProduction()
id := c.Param("id")
// get listing data
dataMcuDaftarPeserta, totalPage, err := mdp.McuDaftarPesertaServices.GetListMcuDaftarPeserta(id, 1, 5)
if err != nil {
defer logger.Sync()
logger.Info("ERROR GET LIST LAB",
zap.Any("error", err),
)
fmt.Println(dataMcuDaftarPeserta)
return err
}
defer logger.Sync()
logger.Info("PESERTA",
zap.Any("totalpage", totalPage),
)
return err
}
func (mdp *McuDaftarPesertaHandler) HandleShowMcuDaftarPeserta(c echo.Context) error {
title := "Daftar Peserta"
content := dev_mcudaftarpeserta.McuDaftarPesertaScreen()
css := dev_mcudaftarpeserta.CSSMcuDaftarPeserta()
js := dev_mcudaftarpeserta.JsMcuDaftarPeserta()
view := dev_mcudaftarpeserta.ShowMcuDafterPeserta(
title,
content,
css,
js,
)
return utils.View(c, view)
}

File diff suppressed because it is too large Load Diff

View File

@@ -3,7 +3,6 @@ package public_handlers
import (
public_services "cpone/services/public"
public_landingpage "cpone/views/public/landingpage"
"net/http"
"github.com/a-h/templ"
"go.uber.org/zap"
@@ -57,7 +56,7 @@ func (uh *LandingPageHandler) ShowLandingPage(c echo.Context) error {
)
// fmt.Printf("%+v\n", udata)
helo := public_landingpage.ShowLandingPage("HOME",
helo := public_landingpage.ShowLandingPage("Hello World",
public_landingpage.MainLandingPage(public_landingpage.ListMedicalService(udata),
public_landingpage.ListAdvantage(adData), public_landingpage.ListPromotion(lpData),
public_landingpage.FooterSection(ftNav)),
@@ -66,12 +65,6 @@ func (uh *LandingPageHandler) ShowLandingPage(c echo.Context) error {
return uh.View(c, helo)
}
func (uh *LandingPageHandler) HandleBtnLogin(c echo.Context) error {
c.Response().Header().Set("HX-Redirect", "/login")
return c.String(http.StatusOK, "/login")
}
func (uh *LandingPageHandler) View(c echo.Context, cmp templ.Component) error {
c.Response().Header().Set(echo.HeaderContentType, echo.MIMETextHTML)

View File

@@ -1,20 +1,13 @@
package public_handlers
import (
"cpone/models"
"cpone/utils"
public_login "cpone/views/public/login"
"encoding/json"
"net/http"
"time"
"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)
}
func NewLoginHandler(us LoginService) *LoginHandler {
@@ -27,133 +20,14 @@ type LoginHandler struct {
LoginService LoginService
}
// func (uh *LoginHandler) ShowLogin(c echo.Context) error {
// helo := client_Login.Show()
// return utils.View(c, helo)
// }
func (lh *LoginHandler) HandlerShowLogin(c echo.Context) error {
si := public_login.ShowLogin("Login ", public_login.MainLogin(true), public_login.CssLogin(), public_login.JsLogin())
si := public_login.ShowLogin("Login ", public_login.MainLogin(), public_login.CssLogin(), public_login.JsLogin())
return utils.View(c, si)
}
func (lh *LoginHandler) HandleSignIn(c echo.Context) error {
logger, _ := zap.NewProduction()
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)
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())
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())
return utils.View(c, si)
// loginform := public_login.FormSignin(false)
// return utils.View(c, loginform)
}
defer logger.Sync()
logger.Info("valid", zap.Any("value", resp))
var url string
switch resp.Data.Type {
case "cpone":
url = "/one-ui"
case "pic":
url = "/corp/dashboard_pic"
case "patient":
url = "/corp/dashboard_pat"
default:
url = "/one-ui"
}
user, err := json.Marshal(resp.Data.User)
if err != nil {
defer logger.Sync()
logger.Info("Error", zap.Error(err))
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)
cookie.Name = "token"
cookie.Value = resp.Data.Token
cookie.Path = "/"
cookie.HttpOnly = true
c.SetCookie(cookie)
userString := string(user)
store := `
<script>
console.log("store token");
const token = "` + resp.Data.Token + `";
const user = JSON.stringify(` + userString + `);
localStorage.setItem("token", token);
localStorage.setItem("user", user);
htmx.on("htmx:configRequest", (e)=> {
e.detail.headers["Authentication"] = "Bearer ` + resp.Data.Token + `"
})
setTimeout(() => {
htmx.ajax('GET', '/login/redirect?url=` + url + `')
}, 200)
</script>
`
c.Response().Header().Set("HX-Trigger", "script")
return c.String(http.StatusOK, store)
}
func (lh *LoginHandler) HandleRedirect(c echo.Context) error {
logger, _ := zap.NewProduction()
url := c.QueryParam("url")
token := c.Request().Header.Get("Authentication")
logger.Info("params", zap.Any("url", url), zap.Any("token", token))
c.Response().Header().Set("HX-Redirect", url)
return c.String(http.StatusOK, url)
}
func (lh *LoginHandler) HandleSignOut(c echo.Context) error {
logger, _ := zap.NewProduction()
logger.Info("Logout")
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>
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)
}

View File

@@ -1,15 +1,12 @@
package handlers
import (
"cpone/auth"
client_handlers "cpone/handlers/client"
corporate_handlers "cpone/handlers/corporate"
mcu_corporate_handlers "cpone/handlers/corporate/mcudetail"
dev_handlers "cpone/handlers/dev"
public_handlers "cpone/handlers/public"
client_services "cpone/services/client"
corporate_services "cpone/services/corporate"
mcu_corporate_services "cpone/services/corporate/mcudetail"
dev_services "cpone/services/dev"
public_services "cpone/services/public"
@@ -19,10 +16,10 @@ import (
)
func SetupRoutes(app *echo.Echo, h *dev_handlers.UserHandler) {
// group := app.Group("/user")
group := app.Group("/user")
// group.GET("", h.HandlerShowUsers)
// group.GET("/details/:id", h.HandlerShowUserById)
group.GET("", h.HandlerShowUsers)
group.GET("/details/:id", h.HandlerShowUserById)
}
@@ -69,17 +66,8 @@ func SetupRoutesPublic(app *echo.Echo, appStore db.AppStore) {
l := public_services.NewServicesLandingPage(public_services.LandingPage{}, appStore)
lh := public_handlers.NewLandingPageHandler(l)
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)
loginServ := public_services.NewServicesLogin(appStore)
loginHadlr := public_handlers.NewLoginHandler(loginServ)
public.GET("login", loginHadlr.HandlerShowLogin)
public.POST("login/signin", loginHadlr.HandleSignIn)
public.GET("login/redirect", loginHadlr.HandleRedirect)
public.GET("login/signout", loginHadlr.HandleSignOut)
loginHdr := public_handlers.NewLoginHandler(l)
public.GET("login", loginHdr.HandlerShowLogin)
// kartu kontrol
publicKartuKontrolServices := public_services.NewServicesKartuKontrol(appStore)
@@ -102,78 +90,16 @@ func SetupRoutesPublic(app *echo.Echo, appStore db.AppStore) {
public.GET("redirectsurveymcu", publicKartuKontrolhandlers.HandlerRedirectToSurveyMcu)
}
func SetupRoutesCorporate(app *echo.Echo, appStore db.AppStore) {
corp := app.Group("/corp", auth.IsLoggedIn)
// corp := app.Group("/corp")
public := app.Group("/corp")
l := corporate_services.NewServicesCompany(appStore)
lh := corporate_handlers.NewCompanyHandler(l)
corp.GET("/company", lh.ShowCompany)
// dashboard_pic
dashbrdPicServ := corporate_services.NewDashboardPicServices(appStore)
dashbrdPicHandl := corporate_handlers.NewDashboardPicHandler(dashbrdPicServ)
corp.GET("/dashboard_pic", dashbrdPicHandl.HandleShowEmployeeAnalyticScreen)
corp.GET("/dashboard_pic/changepage", dashbrdPicHandl.HandlePagination)
corp.GET("/dashboard_pic/filter", dashbrdPicHandl.HandleFilter)
corp.GET("/dashboard_pic/click/:id", dashbrdPicHandl.HandleToDetail)
// mcu detail
mcudServ := corporate_services.NewMcuDetailServices(appStore)
mcudHandr := corporate_handlers.NewMcuDetailHandler(mcudServ)
corp.GET("/dashboard_pic/detail/:id", mcudHandr.HandlerShowMcuDetailScreen)
// tab kepesertaan
kepesertaanSrvs := mcu_corporate_services.NewTabKepersertaanService(appStore)
kepesertaanHdlr := mcu_corporate_handlers.NewTabKepersertaanHandler(kepesertaanSrvs)
corp.GET("/dashboard_pic/detail/:id/tabkepesertaan", kepesertaanHdlr.HandleShowTabKepesertaan)
// tab kelainan global
kelainanglobalSrvs := mcu_corporate_services.NewTabKelainanGlobalServices(appStore)
kelainanglobalHdlr := mcu_corporate_handlers.NewTabKelainanGlobalHandler(kelainanglobalSrvs)
corp.GET("/dashboard_pic/detail/:id/tabkelainanglobal", kelainanglobalHdlr.HandleShowTabKelainanGlobal)
// tab kelainan lab
kelainanlabSrvs := mcu_corporate_services.NewTabKelainanLabServices(appStore)
kelainanlabHdlr := mcu_corporate_handlers.NewTabKelainanLabHandler(kelainanlabSrvs)
corp.GET("/dashboard_pic/detail/:id/tabkelainanlab", kelainanlabHdlr.HandleShowTabKelainanLab)
// tab kelainan non lab
kelnonlabSrvs := mcu_corporate_services.NewTabKelainanNonLabServices(appStore)
kelnonlabHdlr := mcu_corporate_handlers.NewTabKelainanNonLabHandler(kelnonlabSrvs)
corp.GET("/dashboard_pic/detail/:id/tabkelainannonlab", kelnonlabHdlr.HandleShowTabKelainanNonLab)
// tab kelainan fisik
kelainanfisikSrvs := mcu_corporate_services.NewTabKelainanFisikServices(appStore)
kelainanfisikHdlr := mcu_corporate_handlers.NewTabKelainanFisikHandler(kelainanfisikSrvs)
corp.GET("/dashboard_pic/detail/:id/tabkelainanfisik", kelainanfisikHdlr.HandleShowTabKelainanFisik)
// tab kesimpulan
kesimpulanSrv := mcu_corporate_services.NewTabKesimpulanServices(appStore)
kesimpulanHdr := mcu_corporate_handlers.NewTabKesimpulanHandler(kesimpulanSrv)
corp.GET("/dashboard_pic/detail/:id/tabkesimpulan", kesimpulanHdr.HandleShowTabKesimpulanScreen)
// tab daftar peserta
daftarpesertaServ := mcu_corporate_services.NewTabDaftarPesertaServices(appStore)
daftarpesertaHandl := mcu_corporate_handlers.NewTabDaftarPesertaHandlers(daftarpesertaServ)
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)
// tab keuangan
keuanganService := mcu_corporate_services.NewTabKeuanganServices(appStore)
keuanganHandler := mcu_corporate_handlers.NewTabKeuanganHandler(keuanganService)
corp.GET("/dashboard_pic/detail/:id/tabkeuangan", keuanganHandler.HandleShowTabKeuangan)
corp.GET("/dashboard_pic/detail/:id/tabkeuangan/changepage", keuanganHandler.HandleChangePage)
patienServices := corporate_services.NewPatientServices(appStore)
patientHandler := corporate_handlers.NewPatientHandler(patienServices)
corp.GET("/dashboard_pat", patientHandler.HandleShowPatient)
corp.GET("/dashboard_pat/content", patientHandler.LoadLocalData)
corp.GET("/dashboard_pat/changepage", patientHandler.HandleChangePage)
corp.GET("/dashboard_pat/open", patientHandler.HandleOpenReport)
public.GET("/company", lh.ShowCompany)
patientHandler := corporate_handlers.NewPatientHandler(l)
public.GET("/patient", patientHandler.ShowPatient)
}
func SetupRoutesClient(app *echo.Echo, appStore db.AppStore) {
public := app.Group("/client", auth.IsLoggedIn)
public := app.Group("/client")
lpanel := client_services.NewServicesMdPanel(appStore)
lhpanel := client_handlers.NewMdPanelHandler(lpanel)
@@ -306,18 +232,6 @@ func SetupRoutesDev(app *echo.Echo, appStore db.AppStore) {
// clientgroup.GET("/usergroup/edit", mastermenuusergroupHandler.ChangeFormEdit)
// clientgroup.GET("/usergroup/pagination", mastermenuusergroupHandler.HandleChangePage)
// employee analytic
devEmplAnaServices := dev_services.NewEmployeeAnalyticServices(appStore)
devEmplAnaHandler := dev_handlers.NewEmployeeAnalyticHandler(devEmplAnaServices)
dev.GET("/dashboard_pic", devEmplAnaHandler.HandleShowEmployeeAnalyticScreen)
dev.GET("/dashboard_pic/changepage", devEmplAnaHandler.HandlePagination)
dev.GET("/dashboard_pic/filter", devEmplAnaHandler.HandleFilter)
dev.GET("/dashboard_pic/click/:id", devEmplAnaHandler.HandleIntoDetail)
devDetailMcuService := dev_services.NewDetailMcuServices(appStore)
devDetailMcuHandler := dev_handlers.NewDetailMcuHandler(devDetailMcuService)
dev.GET("/detail/:id", devDetailMcuHandler.HandleShowDetailMcuScreen)
// group result
devGRServices := dev_services.NewServicesGroupResult(appStore)
devGRhandlers := dev_handlers.NewGroupResultHandler(devGRServices)
@@ -408,13 +322,17 @@ func SetupRoutesDev(app *echo.Echo, appStore db.AppStore) {
dev.POST("/md/bahan/closedeleteform", devMdBahanHandlers.HandleCloseDeleteMdBahan)
dev.POST("/md/bahan/delete", devMdBahanHandlers.HandleDeleteMdBahan)
// Kesimpulan
devKesimpulanServices := dev_services.NewServicesKesimpulan(appStore)
devKesimpuanHandler := dev_handlers.NewKesimpulanHandler(devKesimpulanServices)
dev.GET("/kesimpulan/:id", devKesimpuanHandler.HandleShowKesimpulanScreen)
//MD Pasien
devMdPasienServices := dev_services.NewMdPasienServices(appStore)
devMdPasienHandlers := dev_handlers.NewMdPasienHandler(devMdPasienServices)
dev.GET("/md/pasien", devMdPasienHandlers.HandleShowMdPasienScreen)
dev.GET("/md/pasien/filter", devMdPasienHandlers.HandleSearchMdPasien)
dev.GET("/md/pasien/pagination", devMdPasienHandlers.HandlePaginationMdPasien)
dev.POST("/md/pasien/add", devMdPasienHandlers.HandleAddMdPasien)
dev.POST("/md/pasien/closeaddform", devMdPasienHandlers.HandleCloseModalMdPasien)
dev.GET("/md/pasien/openedit", devMdPasienHandlers.HandleOpenEditMdPasien)
dev.POST("/md/pasien/closeeditform", devMdPasienHandlers.HandleCloseModalEditMdPasien)
dev.GET("/md/pasien/foto/:filename", devMdPasienHandlers.GetFotoProfile)
dev.POST("/md/pasien/edit", devMdPasienHandlers.HandleEditMdPasien)
// mcu daftar peserta
devMcuDaftarPesertaServices := dev_services.NewMcuDaftarPesertaServices(appStore)
devMcuDaftarPesertaHandler := dev_handlers.NewMcuDaftarPeserta(devMcuDaftarPesertaServices)
dev.GET("/mcudaftarpeserta/:id", devMcuDaftarPesertaHandler.HandleGetMcuDaftarPeserta)
}

View File

@@ -114,6 +114,16 @@ templ CorporateLayout(title string, css templ.Component, js templ.Component, nav
>
// htmx
<script src="assets/js/htmx/htmx.min.js"></script>
<script src="asset-corporate-portal/js/ktappsetting.js"></script>
<!--end::Global Config-->
<!--begin::Global Theme Bundle(used by all pages)-->
<script src="assets/plugins/global/plugins.bundle.js"></script>
<script src="assets/plugins/custom/prismjs/prismjs.bundle.js"></script>
<script src="assets/js/scripts.bundle.js"></script>
<!--end::Global Theme Bundle-->
<script src="assets/js/iconify/iconify.min.js"></script>
// bootstrap datepicker
<script src="assets/js/pages/crud/forms/widgets/bootstrap-datepicker.js"></script>
<!--start::Navbar Mobile-->
<div id="kt_header_mobile" class="header-mobile align-items-center header-mobile-fixed ">
<!--begin::Logo-->
@@ -258,16 +268,6 @@ templ CorporateLayout(title string, css templ.Component, js templ.Component, nav
<!--end::Navbar Laptop With Sidebar-->
@sidebaruserprofile
<!--begin::Global Config(global config for global JS scripts)-->
<script src="asset-corporate-portal/js/ktappsetting.js"></script>
<!--end::Global Config-->
<!--begin::Global Theme Bundle(used by all pages)-->
<script src="assets/plugins/global/plugins.bundle.js"></script>
<script src="assets/plugins/custom/prismjs/prismjs.bundle.js"></script>
<script src="assets/js/scripts.bundle.js"></script>
<!--end::Global Theme Bundle-->
<script src="assets/js/iconify/iconify.min.js"></script>
// bootstrap datepicker
<script src="assets/js/pages/crud/forms/widgets/bootstrap-datepicker.js"></script>
@js
<!--end::Page Scripts-->
</body>

View File

@@ -46,7 +46,7 @@ func CorporateLayout(title string, css templ.Component, js templ.Component, navb
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</head><!--end::Head--><!--begin::Body--><body id=\"kt_body\" class=\"header-fixed header-mobile-fixed subheader-enabled subheader-fixed subheader-mobile-fixed aside-enabled aside-fixed aside-minimize-hoverable page-loading bg-white\"><script src=\"assets/js/htmx/htmx.min.js\"></script><!--start::Navbar Mobile--><div id=\"kt_header_mobile\" class=\"header-mobile align-items-center header-mobile-fixed \"><!--begin::Logo--><a href=\"index.html\"><img alt=\"Logo\" src=\"asset-corporate-portal/media/logo/logo.png\" style=\"object-fit: contain;height: 4vh;\"></a><!--end::Logo--><!--begin::Toolbar--><div class=\"d-flex align-items-center\"><!--begin::Aside Mobile Toggle--><button class=\"btn p-0 burger-icon burger-icon-left\" id=\"kt_aside_mobile_toggle\"><span></span></button><!--end::Aside Mobile Toggle--><!--begin::Topbar Mobile Toggle--><button class=\"btn btn-hover-text-primary p-0 ml-2\" id=\"kt_header_mobile_topbar_toggle\"><span class=\"svg-icon svg-icon-xl\"><!--begin::Svg Icon | path:/assets/media/svg/icons/General/User.svg--><svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"24px\" height=\"24px\" viewBox=\"0 0 24 24\" version=\"1.1\"><g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"><polygon points=\"0 0 24 0 24 24 0 24\"></polygon> <path d=\"M12,11 C9.790861,11 8,9.209139 8,7 C8,4.790861 9.790861,3 12,3 C14.209139,3 16,4.790861 16,7 C16,9.209139 14.209139,11 12,11 Z\" fill=\"#000000\" fill-rule=\"nonzero\" opacity=\"0.3\"></path> <path d=\"M3.00065168,20.1992055 C3.38825852,15.4265159 7.26191235,13 11.9833413,13 C16.7712164,13 20.7048837,15.2931929 20.9979143,20.2 C21.0095879,20.3954741 20.9979143,21 20.2466999,21 C16.541124,21 11.0347247,21 3.72750223,21 C3.47671215,21 2.97953825,20.45918 3.00065168,20.1992055 Z\" fill=\"#000000\" fill-rule=\"nonzero\"></path></g></svg><!--end::Svg Icon--></span></button><!--end::Topbar Mobile Toggle--></div><!--end::Toolbar--></div><!--start::Navbar Mobile--><!--start::Navbar Laptop With Sidebar--><div class=\"d-flex flex-column flex-root\"><!--begin::Page--><div class=\"d-flex flex-row flex-column-fluid page\"><!--begin::Aside--><div class=\"aside aside-left aside-fixed d-flex flex-column flex-row-auto\" id=\"kt_aside\"><!--begin::Brand--><div class=\"brand flex-column-auto \" id=\"kt_brand\"><!--begin::Logo--><a href=\"index.html\" class=\"brand-logo\" style=\"\"><img alt=\"Logo\" class=\"img-fluid\" src=\"asset-corporate-portal/media/logo/logo.png\"></a><!--end::Logo--><!--begin::Toggle--><button class=\"brand-toggle btn btn-sm px-0\" id=\"kt_aside_toggle\"><span class=\"svg-icon svg-icon svg-icon-xl\"><!--begin::Svg Icon | path:/assets/media/svg/icons/Navigation/Angle-double-left.svg--><svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"24px\" height=\"24px\" viewBox=\"0 0 24 24\" version=\"1.1\"><g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"><polygon points=\"0 0 24 0 24 24 0 24\"></polygon> <path d=\"M5.29288961,6.70710318 C4.90236532,6.31657888 4.90236532,5.68341391 5.29288961,5.29288961 C5.68341391,4.90236532 6.31657888,4.90236532 6.70710318,5.29288961 L12.7071032,11.2928896 C13.0856821,11.6714686 13.0989277,12.281055 12.7371505,12.675721 L7.23715054,18.675721 C6.86395813,19.08284 6.23139076,19.1103429 5.82427177,18.7371505 C5.41715278,18.3639581 5.38964985,17.7313908 5.76284226,17.3242718 L10.6158586,12.0300721 L5.29288961,6.70710318 Z\" fill=\"#000000\" fill-rule=\"nonzero\" transform=\"translate(8.999997, 11.999999) scale(-1, 1) translate(-8.999997, -11.999999) \"></path> <path d=\"M10.7071009,15.7071068 C10.3165766,16.0976311 9.68341162,16.0976311 9.29288733,15.7071068 C8.90236304,15.3165825 8.90236304,14.6834175 9.29288733,14.2928932 L15.2928873,8.29289322 C15.6714663,7.91431428 16.2810527,7.90106866 16.6757187,8.26284586 L22.6757187,13.7628459 C23.0828377,14.1360383 23.1103407,14.7686056 22.7371482,15.1757246 C22.3639558,15.5828436 21.7313885,15.6103465 21.3242695,15.2371541 L16.0300699,10.3841378 L10.7071009,15.7071068 Z\" fill=\"#000000\" fill-rule=\"nonzero\" opacity=\"0.3\" transform=\"translate(15.999997, 11.999999) scale(-1, 1) rotate(-270.000000) translate(-15.999997, -11.999999) \"></path></g></svg><!--end::Svg Icon--></span></button><!--end::Toolbar--></div><!--end::Brand--><!--begin::Aside Menu-->")
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</head><!--end::Head--><!--begin::Body--><body id=\"kt_body\" class=\"header-fixed header-mobile-fixed subheader-enabled subheader-fixed subheader-mobile-fixed aside-enabled aside-fixed aside-minimize-hoverable page-loading bg-white\"><script src=\"assets/js/htmx/htmx.min.js\"></script><script src=\"asset-corporate-portal/js/ktappsetting.js\"></script><!--end::Global Config--><!--begin::Global Theme Bundle(used by all pages)--><script src=\"assets/plugins/global/plugins.bundle.js\"></script><script src=\"assets/plugins/custom/prismjs/prismjs.bundle.js\"></script><script src=\"assets/js/scripts.bundle.js\"></script><!--end::Global Theme Bundle--><script src=\"assets/js/iconify/iconify.min.js\"></script><script src=\"assets/js/pages/crud/forms/widgets/bootstrap-datepicker.js\"></script><!--start::Navbar Mobile--><div id=\"kt_header_mobile\" class=\"header-mobile align-items-center header-mobile-fixed \"><!--begin::Logo--><a href=\"index.html\"><img alt=\"Logo\" src=\"asset-corporate-portal/media/logo/logo.png\" style=\"object-fit: contain;height: 4vh;\"></a><!--end::Logo--><!--begin::Toolbar--><div class=\"d-flex align-items-center\"><!--begin::Aside Mobile Toggle--><button class=\"btn p-0 burger-icon burger-icon-left\" id=\"kt_aside_mobile_toggle\"><span></span></button><!--end::Aside Mobile Toggle--><!--begin::Topbar Mobile Toggle--><button class=\"btn btn-hover-text-primary p-0 ml-2\" id=\"kt_header_mobile_topbar_toggle\"><span class=\"svg-icon svg-icon-xl\"><!--begin::Svg Icon | path:/assets/media/svg/icons/General/User.svg--><svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"24px\" height=\"24px\" viewBox=\"0 0 24 24\" version=\"1.1\"><g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"><polygon points=\"0 0 24 0 24 24 0 24\"></polygon> <path d=\"M12,11 C9.790861,11 8,9.209139 8,7 C8,4.790861 9.790861,3 12,3 C14.209139,3 16,4.790861 16,7 C16,9.209139 14.209139,11 12,11 Z\" fill=\"#000000\" fill-rule=\"nonzero\" opacity=\"0.3\"></path> <path d=\"M3.00065168,20.1992055 C3.38825852,15.4265159 7.26191235,13 11.9833413,13 C16.7712164,13 20.7048837,15.2931929 20.9979143,20.2 C21.0095879,20.3954741 20.9979143,21 20.2466999,21 C16.541124,21 11.0347247,21 3.72750223,21 C3.47671215,21 2.97953825,20.45918 3.00065168,20.1992055 Z\" fill=\"#000000\" fill-rule=\"nonzero\"></path></g></svg><!--end::Svg Icon--></span></button><!--end::Topbar Mobile Toggle--></div><!--end::Toolbar--></div><!--start::Navbar Mobile--><!--start::Navbar Laptop With Sidebar--><div class=\"d-flex flex-column flex-root\"><!--begin::Page--><div class=\"d-flex flex-row flex-column-fluid page\"><!--begin::Aside--><div class=\"aside aside-left aside-fixed d-flex flex-column flex-row-auto\" id=\"kt_aside\"><!--begin::Brand--><div class=\"brand flex-column-auto \" id=\"kt_brand\"><!--begin::Logo--><a href=\"index.html\" class=\"brand-logo\" style=\"\"><img alt=\"Logo\" class=\"img-fluid\" src=\"asset-corporate-portal/media/logo/logo.png\"></a><!--end::Logo--><!--begin::Toggle--><button class=\"brand-toggle btn btn-sm px-0\" id=\"kt_aside_toggle\"><span class=\"svg-icon svg-icon svg-icon-xl\"><!--begin::Svg Icon | path:/assets/media/svg/icons/Navigation/Angle-double-left.svg--><svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"24px\" height=\"24px\" viewBox=\"0 0 24 24\" version=\"1.1\"><g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"><polygon points=\"0 0 24 0 24 24 0 24\"></polygon> <path d=\"M5.29288961,6.70710318 C4.90236532,6.31657888 4.90236532,5.68341391 5.29288961,5.29288961 C5.68341391,4.90236532 6.31657888,4.90236532 6.70710318,5.29288961 L12.7071032,11.2928896 C13.0856821,11.6714686 13.0989277,12.281055 12.7371505,12.675721 L7.23715054,18.675721 C6.86395813,19.08284 6.23139076,19.1103429 5.82427177,18.7371505 C5.41715278,18.3639581 5.38964985,17.7313908 5.76284226,17.3242718 L10.6158586,12.0300721 L5.29288961,6.70710318 Z\" fill=\"#000000\" fill-rule=\"nonzero\" transform=\"translate(8.999997, 11.999999) scale(-1, 1) translate(-8.999997, -11.999999) \"></path> <path d=\"M10.7071009,15.7071068 C10.3165766,16.0976311 9.68341162,16.0976311 9.29288733,15.7071068 C8.90236304,15.3165825 8.90236304,14.6834175 9.29288733,14.2928932 L15.2928873,8.29289322 C15.6714663,7.91431428 16.2810527,7.90106866 16.6757187,8.26284586 L22.6757187,13.7628459 C23.0828377,14.1360383 23.1103407,14.7686056 22.7371482,15.1757246 C22.3639558,15.5828436 21.7313885,15.6103465 21.3242695,15.2371541 L16.0300699,10.3841378 L10.7071009,15.7071068 Z\" fill=\"#000000\" fill-rule=\"nonzero\" opacity=\"0.3\" transform=\"translate(15.999997, 11.999999) scale(-1, 1) rotate(-270.000000) translate(-15.999997, -11.999999) \"></path></g></svg><!--end::Svg Icon--></span></button><!--end::Toolbar--></div><!--end::Brand--><!--begin::Aside Menu-->")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
@@ -78,7 +78,7 @@ func CorporateLayout(title string, css templ.Component, js templ.Component, navb
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<!--begin::Global Config(global config for global JS scripts)--><script src=\"asset-corporate-portal/js/ktappsetting.js\"></script><!--end::Global Config--><!--begin::Global Theme Bundle(used by all pages)--><script src=\"assets/plugins/global/plugins.bundle.js\"></script><script src=\"assets/plugins/custom/prismjs/prismjs.bundle.js\"></script><script src=\"assets/js/scripts.bundle.js\"></script><!--end::Global Theme Bundle--><script src=\"assets/js/iconify/iconify.min.js\"></script><script src=\"assets/js/pages/crud/forms/widgets/bootstrap-datepicker.js\"></script>")
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<!--begin::Global Config(global config for global JS scripts)-->")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}

View File

@@ -1,174 +0,0 @@
package layout
templ DashboardLayout(
title string,
css templ.Component,
js templ.Component,
navbaruser templ.Component,
sidebaruser templ.Component,
) {
<!DOCTYPE html>
<html lang="en">
<!--begin::Head-->
<head>
<base href="/"/>
<meta charset="utf-8"/>
<title>Company Portal | { title }</title>
<meta name="description" content="Company Portal"/>
<meta
name="viewport"
content="width=device-width, initial-scale=1, shrink-to-fit=no"
/>
<!--begin::Fonts-->
<link
rel="stylesheet"
href="assets/css/googlefont/poppins.css"
/>
<!--end::Fonts-->
<!--begin::Page Custom Styles(used by this page)-->
<link
href="assets/css/pages/login/login-1.css"
rel="stylesheet"
type="text/css"
/>
<!--end::Page Custom Styles-->
<!--begin::Global Theme Styles(used by all pages)-->
<link
href="assets/plugins/global/plugins.bundle.css"
rel="stylesheet"
type="text/css"
/>
<link
href="assets/plugins/custom/prismjs/prismjs.bundle.css"
rel="stylesheet"
type="text/css"
/>
<link href="assets/css/style.bundle.css" rel="stylesheet" type="text/css"/>
<!--end::Global Theme Styles-->
<!--begin::Layout Themes(used by all pages)-->
<link
href="assets/css/themes/layout/header/base/light.css"
rel="stylesheet"
type="text/css"
/>
<link
href="assets/css/themes/layout/header/menu/light.css"
rel="stylesheet"
type="text/css"
/>
<link
href="assets/css/themes/layout/brand/dark.css"
rel="stylesheet"
type="text/css"
/>
<link
href="assets/css/themes/layout/aside/dark.css"
rel="stylesheet"
type="text/css"
/>
<!--end::Layout Themes-->
<link
rel="shortcut icon"
href="asset-corporate-portal/media/logo/logo-small.jpg"
/>
<!--end::Layout Themes SAS-->
<link
href="asset-corporate-portal/css/sas.bundle.css"
rel="stylesheet"
type="text/css"
/>
<link
rel="stylesheet"
href="assets/css/googlefont/publicsans.css"
/>
<link
rel="stylesheet"
href="assets/css/googlefont/roboto.css"
/>
<!-- slick -->
<link
rel="stylesheet"
type="text/css"
href="assets/css/slick/slick.css"
/>
<link
rel="stylesheet"
type="text/css"
href="assets/css/slick/slick-theme.css"
/>
@css
</head>
<!--end::Head-->
<!--begin::Body-->
<body id="kt_body" class="header-fixed header-mobile-fixed subheader-enabled subheader-fixed subheader-mobile-fixed aside-enabled aside-fixed aside-minimize-hoverable page-loading bg-white">
<script src="assets/js/htmx/htmx.min.js"></script>
<!--start::Navbar Mobile-->
<div id="kt_header_mobile" class="header-mobile align-items-center header-mobile-fixed ">
<!--begin::Logo-->
<a href="index.html">
<img alt="Logo" src="asset-corporate-portal/media/logo/logo.png" style="object-fit: contain;height: 4vh;"/>
</a>
<!--end::Logo-->
<!--begin::Toolbar-->
<div class="d-flex align-items-center">
<!--begin::Topbar Mobile Toggle-->
<button class="btn btn-hover-text-primary p-0 ml-2" id="kt_header_mobile_topbar_toggle">
<span class="svg-icon svg-icon-xl">
<!--begin::Svg Icon | path:/assets/media/svg/icons/General/User.svg-->
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="24px"
height="24px"
viewBox="0 0 24 24"
version="1.1"
>
<g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<polygon points="0 0 24 0 24 24 0 24"></polygon>
<path
d="M12,11 C9.790861,11 8,9.209139 8,7 C8,4.790861 9.790861,3 12,3 C14.209139,3 16,4.790861 16,7 C16,9.209139 14.209139,11 12,11 Z"
fill="#000000"
fill-rule="nonzero"
opacity="0.3"
></path>
<path
d="M3.00065168,20.1992055 C3.38825852,15.4265159 7.26191235,13 11.9833413,13 C16.7712164,13 20.7048837,15.2931929 20.9979143,20.2 C21.0095879,20.3954741 20.9979143,21 20.2466999,21 C16.541124,21 11.0347247,21 3.72750223,21 C3.47671215,21 2.97953825,20.45918 3.00065168,20.1992055 Z"
fill="#000000"
fill-rule="nonzero"
></path>
</g>
</svg><!--end::Svg Icon-->
</span>
</button>
<!--end::Topbar Mobile Toggle-->
</div>
<!--end::Toolbar-->
</div>
<!--start::Navbar Mobile-->
<!--start::Navbar Laptop With Sidebar-->
<div class="mb-24 mt-8" style="padding-left: 10vw; padding-right: 10vw;">
<div class="align-item-center">
@navbaruser
</div>
<div class="mt-16">
{ children... }
</div>
</div>
<!--end::Navbar Laptop With Sidebar-->
@sidebaruser
<!--begin::Global Config(global config for global JS scripts)-->
<script src="asset-corporate-portal/js/ktappsetting.js"></script>
<!--end::Global Config-->
<!--begin::Global Theme Bundle(used by all pages)-->
<script src="assets/plugins/global/plugins.bundle.js"></script>
<script src="assets/plugins/custom/prismjs/prismjs.bundle.js"></script>
<script src="assets/js/scripts.bundle.js"></script>
<!--end::Global Theme Bundle-->
<script src="assets/js/iconify/iconify.min.js"></script>
// bootstrap datepicker
<script src="assets/js/pages/crud/forms/widgets/bootstrap-datepicker.js"></script>
@js
<!--end::Page Scripts-->
</body>
</html>
}

View File

@@ -1,94 +0,0 @@
// Code generated by templ - DO NOT EDIT.
// templ: version: v0.2.663
package layout
//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"
func DashboardLayout(
title string,
css templ.Component,
js templ.Component,
navbaruser templ.Component,
sidebaruser 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("<!doctype html><html lang=\"en\"><!--begin::Head--><head><base href=\"/\"><meta charset=\"utf-8\"><title>Company Portal | ")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
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: `layout\layout_dashboard.templ`, Line: 16, Col: 34}
}
_, 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("</title><meta name=\"description\" content=\"Company Portal\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1, shrink-to-fit=no\"><!--begin::Fonts--><link rel=\"stylesheet\" href=\"assets/css/googlefont/poppins.css\"><!--end::Fonts--><!--begin::Page Custom Styles(used by this page)--><link href=\"assets/css/pages/login/login-1.css\" rel=\"stylesheet\" type=\"text/css\"><!--end::Page Custom Styles--><!--begin::Global Theme Styles(used by all pages)--><link href=\"assets/plugins/global/plugins.bundle.css\" rel=\"stylesheet\" type=\"text/css\"><link href=\"assets/plugins/custom/prismjs/prismjs.bundle.css\" rel=\"stylesheet\" type=\"text/css\"><link href=\"assets/css/style.bundle.css\" rel=\"stylesheet\" type=\"text/css\"><!--end::Global Theme Styles--><!--begin::Layout Themes(used by all pages)--><link href=\"assets/css/themes/layout/header/base/light.css\" rel=\"stylesheet\" type=\"text/css\"><link href=\"assets/css/themes/layout/header/menu/light.css\" rel=\"stylesheet\" type=\"text/css\"><link href=\"assets/css/themes/layout/brand/dark.css\" rel=\"stylesheet\" type=\"text/css\"><link href=\"assets/css/themes/layout/aside/dark.css\" rel=\"stylesheet\" type=\"text/css\"><!--end::Layout Themes--><link rel=\"shortcut icon\" href=\"asset-corporate-portal/media/logo/logo-small.jpg\"><!--end::Layout Themes SAS--><link href=\"asset-corporate-portal/css/sas.bundle.css\" rel=\"stylesheet\" type=\"text/css\"><link rel=\"stylesheet\" href=\"assets/css/googlefont/publicsans.css\"><link rel=\"stylesheet\" href=\"assets/css/googlefont/roboto.css\"><!-- slick --><link rel=\"stylesheet\" type=\"text/css\" href=\"assets/css/slick/slick.css\"><link rel=\"stylesheet\" type=\"text/css\" href=\"assets/css/slick/slick-theme.css\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = css.Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</head><!--end::Head--><!--begin::Body--><body id=\"kt_body\" class=\"header-fixed header-mobile-fixed subheader-enabled subheader-fixed subheader-mobile-fixed aside-enabled aside-fixed aside-minimize-hoverable page-loading bg-white\"><script src=\"assets/js/htmx/htmx.min.js\"></script><!--start::Navbar Mobile--><div id=\"kt_header_mobile\" class=\"header-mobile align-items-center header-mobile-fixed \"><!--begin::Logo--><a href=\"index.html\"><img alt=\"Logo\" src=\"asset-corporate-portal/media/logo/logo.png\" style=\"object-fit: contain;height: 4vh;\"></a><!--end::Logo--><!--begin::Toolbar--><div class=\"d-flex align-items-center\"><!--begin::Topbar Mobile Toggle--><button class=\"btn btn-hover-text-primary p-0 ml-2\" id=\"kt_header_mobile_topbar_toggle\"><span class=\"svg-icon svg-icon-xl\"><!--begin::Svg Icon | path:/assets/media/svg/icons/General/User.svg--><svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"24px\" height=\"24px\" viewBox=\"0 0 24 24\" version=\"1.1\"><g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"><polygon points=\"0 0 24 0 24 24 0 24\"></polygon> <path d=\"M12,11 C9.790861,11 8,9.209139 8,7 C8,4.790861 9.790861,3 12,3 C14.209139,3 16,4.790861 16,7 C16,9.209139 14.209139,11 12,11 Z\" fill=\"#000000\" fill-rule=\"nonzero\" opacity=\"0.3\"></path> <path d=\"M3.00065168,20.1992055 C3.38825852,15.4265159 7.26191235,13 11.9833413,13 C16.7712164,13 20.7048837,15.2931929 20.9979143,20.2 C21.0095879,20.3954741 20.9979143,21 20.2466999,21 C16.541124,21 11.0347247,21 3.72750223,21 C3.47671215,21 2.97953825,20.45918 3.00065168,20.1992055 Z\" fill=\"#000000\" fill-rule=\"nonzero\"></path></g></svg><!--end::Svg Icon--></span></button><!--end::Topbar Mobile Toggle--></div><!--end::Toolbar--></div><!--start::Navbar Mobile--><!--start::Navbar Laptop With Sidebar--><div class=\"mb-24 mt-8\" style=\"padding-left: 10vw; padding-right: 10vw;\"><div class=\"align-item-center\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = navbaruser.Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</div><div class=\"mt-16\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = templ_7745c5c3_Var1.Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</div></div><!--end::Navbar Laptop With Sidebar-->")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = sidebaruser.Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<!--begin::Global Config(global config for global JS scripts)--><script src=\"asset-corporate-portal/js/ktappsetting.js\"></script><!--end::Global Config--><!--begin::Global Theme Bundle(used by all pages)--><script src=\"assets/plugins/global/plugins.bundle.js\"></script><script src=\"assets/plugins/custom/prismjs/prismjs.bundle.js\"></script><script src=\"assets/js/scripts.bundle.js\"></script><!--end::Global Theme Bundle--><script src=\"assets/js/iconify/iconify.min.js\"></script><script src=\"assets/js/pages/crud/forms/widgets/bootstrap-datepicker.js\"></script>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = js.Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<!--end::Page Scripts--></body></html>")
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

@@ -3,6 +3,18 @@ package layout
// LAYOUT PLAYGROUND
templ PlaygroundLayout(title string, css templ.Component, js templ.Component) {
<!DOCTYPE html>
<!--
Template Name: Metronic - Bootstrap 4 HTML, React, Angular 9 & VueJS Admin Dashboard Theme
Author: KeenThemes
Website: http://www.keenthemes.com/
Contact: support@keenthemes.com
Follow: www.twitter.com/keenthemes
Dribbble: www.dribbble.com/keenthemes
Like: www.facebook.com/keenthemes
Purchase: https://1.envato.market/EA4JP
Renew Support: https://1.envato.market/EA4JP
License: You must have a valid license purchased only from themeforest(the above link) in order to legally use the theme for your project.
-->
<html lang="en">
<!--begin::Head-->
<head>

View File

@@ -24,14 +24,14 @@ func PlaygroundLayout(title string, css templ.Component, js templ.Component) tem
templ_7745c5c3_Var1 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<!doctype html><html lang=\"en\"><!--begin::Head--><head><base href=\"/\"><meta charset=\"utf-8\"><title>Company Portal | ")
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<!doctype html><!--\r\n\t\tTemplate Name: Metronic - Bootstrap 4 HTML, React, Angular 9 & VueJS Admin Dashboard Theme\r\n\t\tAuthor: KeenThemes\r\n\t\tWebsite: http://www.keenthemes.com/\r\n\t\tContact: support@keenthemes.com\r\n\t\tFollow: www.twitter.com/keenthemes\r\n\t\tDribbble: www.dribbble.com/keenthemes\r\n\t\tLike: www.facebook.com/keenthemes\r\n\t\tPurchase: https://1.envato.market/EA4JP\r\n\t\tRenew Support: https://1.envato.market/EA4JP\r\n\t\tLicense: You must have a valid license purchased only from themeforest(the above link) in order to legally use the theme for your project.\r\n\t\t--><html lang=\"en\"><!--begin::Head--><head><base href=\"/\"><meta charset=\"utf-8\"><title>Company Portal | ")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
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: `layout\playground_layout.templ`, Line: 11, Col: 34}
return templ.Error{Err: templ_7745c5c3_Err, FileName: `layout\playground_layout.templ`, Line: 23, Col: 34}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var2))
if templ_7745c5c3_Err != nil {

View File

@@ -12,5 +12,7 @@ type CustomTextFieldv2Prm struct {
Type string `default:"text"`
Value string `default:""`
ErrorMsg string `default:""`
Min string
Max string
ID string
}

View File

@@ -1,155 +0,0 @@
package models
type SeriesData struct {
Value int `json:"value"`
Name string `json:"name"`
}
type Series struct {
Label struct {
Position string `json:"position"`
Formatter string `json:"formatter"`
} `json:"label"`
Name string `json:"name"`
Type string `json:"type"`
Radius []string `json:"radius"`
ItemStyle struct {
BorderRadius int `json:"borderRadius"`
BorderColor string `json:"borderColor"`
BorderWidth int `json:"borderWidth"`
} `json:"itemStyle"`
Data []SeriesData `json:"data"`
Emphasis struct {
ItemStyle struct {
ShadowBlur int `json:"shadowBlur"`
ShadowOffsetX int `json:"shadowOffsetX"`
ShadowColor string `json:"shadowColor"`
} `json:"itemStyle"`
} `json:"emphasis"`
}
type Piechart struct {
Title struct {
Text string `json:"text"`
SubText string `json:"subtext"`
Left string `json:"left"`
} `json:"title"`
Tooltip struct {
Trigger string `json:"trigger"`
} `json:"tooltip"`
Legend struct {
Top string `json:"top"`
Left string `json:"left"`
Orient string `json:"orient"`
Height int `json:"height"`
} `json:"legend"`
Series []Series `json:"series"`
}
type Barchart struct {
Title struct {
Text string `json:"text"`
} `json:"title"`
Dataset struct {
Source [][]interface{} `json:"source"`
} `json:"dataset"`
Grid struct {
ContainLabel bool `json:"containLabel"`
} `json:"grid"`
XAxis struct {
Name string `json:"name"`
} `json:"xAxis"`
YAxis struct {
Type string `json:"type"`
} `json:"yAxis"`
VisualMap struct {
Orient string `json:"orient"`
Left string `json:"left"`
Min int `json:"min"`
Max int `json:"max"`
Show bool `json:"show"`
Dimension int `json:"dimension"`
InRange struct {
Color []string `json:"color"`
} `json:"inRange"`
} `json:"visualMap"`
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"`
} `json:"series"`
Tooltip struct {
Trigger string `json:"trigger"`
AxisPointer struct {
Type string `json:"type"`
} `json:"axisPointer"`
} `json:"tooltip"`
}
type BarDataset struct {
Source [][]interface{} `json:"source"`
}
type BarchartV2 struct {
Title struct {
Text string `json:"text"`
} `json:"title"`
Dataset struct {
Source [][]interface{} `json:"source"`
} `json:"dataset"`
Grid struct {
ContainLabel bool `json:"containLabel"`
} `json:"grid"`
XAxis struct {
Name string `json:"name"`
Type string `json:"type"`
AxisLabel struct {
Interval int `json:"interval"`
Rotate int `json:"rotate"`
} `json:"axisLabel"`
} `json:"xAxis"`
YAxis struct {
Type string `json:"type"`
Name string `json:"name"`
NameTextStyle struct {
Align string `json:"align"`
} `json:"nameTextStyle"`
NameGap int `json:"nameGap"`
} `json:"yAxis"`
VisualMap struct {
Orient string `json:"orient"`
Left string `json:"left"`
Min int `json:"min"`
Max int `json:"max"`
Dimension int `json:"dimension"`
Show bool `json:"show"`
InRange struct {
Color []string `json:"color"`
} `json:"inRange"`
} `json:"visualMap"`
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"`
} `json:"series"`
Tooltip struct {
Trigger string `json:"trigger"`
AxisPointer struct {
Type string `json:"type"`
} `json:"axisPointer"`
} `json:"tooltip"`
}

View File

@@ -0,0 +1,11 @@
package models
type CustomDatePickerPrm struct {
Label string `default:"Label"`
Name string `default:"name"`
Placeholder string `default:"Placeholder"`
Type string `default:"text"`
Value string `default:""`
ErrorMsg string `default:""`
ID string
}

View File

@@ -0,0 +1,9 @@
package models
type CustomUploadFotoPrm struct {
ID string `desc:"ID"`
Name string `desc:"name"`
Accept string `desc:"ekstension acc (.png, .jpg, .jpeg)"`
Label string `desc:"label title"`
LinkFoto string
}

View File

@@ -1,11 +0,0 @@
package models
type DashboardPatient struct {
T_OrderHeaderID int `db:"T_OrderHeaderID"`
T_OrderHeaderDate string `db:"T_OrderHeaderDate"`
T_OrderHeaderLabNumber string `db:"T_OrderHeaderLabNumber"`
T_OrderHeaderM_PatientID int `db:"T_OrderHeaderM_PatientID"`
T_OrderHeaderCorporateID int `db:"T_OrderHeaderCorporateID"`
T_OrderHeaderMgm_McuID int `db:"T_OrderHeaderMgm_McuID"`
T_OrderHeaderIsActive string `db:"T_OrderHeaderIsActive"`
}

View File

@@ -1,15 +0,0 @@
package models
type DashboardPic struct {
Mgm_McuID int `db:"Mgm_McuID"`
Mgm_McuLabel string `db:"Mgm_McuLabel"`
Mgm_McuFlagRelasiBayarSendiri string `db:"Mgm_McuFlagRelasiBayarSendiri"`
Mgm_McuBisaTambahPemeriksaan string `db:"Mgm_McuBisaTambahPemeriksaan"`
Mgm_McuCorporateID int `db:"Mgm_McuCorporateID"`
Mgm_McuNumber string `db:"Mgm_McuNumber"`
Mgm_McuNumberNational string `db:"Mgm_McuNumberNational"`
Mgm_McuNote string `db:"Mgm_McuNote"`
Mgm_McuStartDate string `db:"Mgm_McuStartDate"`
Mgm_McuEndDate string `db:"Mgm_McuEndDate"`
Mgm_McuIsActive string `db:"Mgm_McuIsActive"`
}

View File

@@ -1,7 +0,0 @@
package models
type ModelKesimpulanLab struct {
Nomor string `db:"nomor"`
Test string `db:"Test"`
Total string `db:"total"`
}

View File

@@ -1,34 +0,0 @@
package models
type KeuanganModel struct {
F_BillID int `db:"F_BillID"`
F_BillNo string `db:"F_BillNo"`
F_BillCorporateID int `db:"F_BillCorporateID"`
F_BillDueDate string `db:"F_BillDueDate"`
F_BillTotal int `db:"F_BillTotal"`
F_BillUnpaid int `db:"F_BillUnpaid"`
F_BillCreated string `db:"F_BillCreated"`
BillPayment []BillPaymentModel
TotalBillPayment int
}
type BillPaymentModel struct {
F_BillPaymentID int `db:"F_BillPaymentID"`
F_BillPaymentF_BillID int `db:"F_BillPaymentF_BillID"`
F_BillPaymentDate string `db:"F_BillPaymentDate"`
F_BillPaymentNumber string `db:"F_BillPaymentNumber"`
F_BillPaymentAmount float64 `db:"F_BillPaymentAmount"`
}
type TotalOrderHeader struct {
T_OrderHeaderID int `db:"T_OrderHeaderID"`
T_OrderHeaderCorporateID int `db:"T_OrderHeaderCorporateID"`
T_OrderHeaderTotal float64 `db:"T_OrderHeaderTotal"`
T_OrderHeaderCreated string `db:"T_OrderHeaderCreated"`
}
type TotalBillCard struct {
TotalTagihan int
TotalPelunasan int
TotalHutang int
}

View File

@@ -1,89 +0,0 @@
package models
type ResponseApi struct {
Status string `json:"status"`
Data struct {
User struct {
MUserID string `json:"M_UserID"`
MUserEmail string `json:"M_UserEmail"`
MUserUsername string `json:"M_UserUsername"`
MUserGroupDashboard string `json:"M_UserGroupDashboard"`
MUserDefaultTSampleStationID string `json:"M_UserDefaultT_SampleStationID"`
MStaffName string `json:"M_StaffName"`
IsCourier string `json:"is_courier"`
TimeAutologout string `json:"time_autologout"`
IP string `json:"ip"`
Agent string `json:"agent"`
Version string `json:"version"`
LastLogin string `json:"last-login"`
} `json:"user"`
Token string `json:"token"`
Type string `json:"type"`
} `json:"data"`
Message string `json:"message"`
Query string `json:"query"`
DbError struct {
Code int `json:"code"`
Message string `json:"message"`
} `json:"db_error"`
}
type ResponseInvalid struct {
Status string `json:"status"`
Message string `json:"message"`
Query string `json:"query"`
DbError struct {
Code int `json:"code"`
Message string `json:"message"`
} `json:"db_error"`
}
type ResponseValid struct {
Status string `json:"status"`
Data struct {
User struct {
MUserID string `json:"M_UserID"`
MUserEmail string `json:"M_UserEmail"`
MUserUsername string `json:"M_UserUsername"`
MUserGroupDashboard string `json:"M_UserGroupDashboard"`
MUserDefaultTSampleStationID string `json:"M_UserDefaultT_SampleStationID"`
MStaffName string `json:"M_StaffName"`
IsCourier string `json:"is_courier"`
TimeAutologout string `json:"time_autologout"`
IP string `json:"ip"`
Agent string `json:"agent"`
Version string `json:"version"`
LastLogin string `json:"last-login"`
} `json:"user"`
Token string `json:"token"`
Type string `json:"type"`
} `json:"data"`
}
type Response struct {
Status string `json:"status"`
Message string `json:"message"`
Query string `json:"query"`
DbError struct {
Code int `json:"code"`
Message string `json:"message"`
} `json:"db_error"`
Data struct {
User struct {
MUserID string `json:"M_UserID"`
MUserEmail string `json:"M_UserEmail"`
MUserUsername string `json:"M_UserUsername"`
MUserGroupDashboard string `json:"M_UserGroupDashboard"`
MUserDefaultTSampleStationID string `json:"M_UserDefaultT_SampleStationID"`
MStaffName string `json:"M_StaffName"`
IsCourier string `json:"is_courier"`
TimeAutologout string `json:"time_autologout"`
IP string `json:"ip"`
Agent string `json:"agent"`
Version string `json:"version"`
LastLogin string `json:"last-login"`
} `json:"user"`
Token string `json:"token"`
Type string `json:"type"`
} `json:"data"`
}

View File

@@ -1,27 +0,0 @@
package models
type ModelMcuDaftarPeserta struct {
T_OrderHeaderID string `db:"T_OrderHeaderID"`
T_OrderHeaderDate string `db:"T_OrderHeaderDate"`
T_OrderHeaderLabNumber string `db:"T_OrderHeaderLabNumber"`
T_OrderHeaderM_PatientAge string `db:"T_OrderHeaderM_PatientAge"`
M_PatientID string `db:"M_PatientID"`
M_PatientNoReg string `db:"M_PatientNoReg"`
M_PatientName string `db:"M_PatientName"`
M_PatientGender string `db:"M_PatientGender"`
JenisKelamin string `db:"jenisKelamin"`
M_PatientDOB string `db:"M_PatientDOB"`
Age string `db:"age"`
}
type ModelMcuPesertaReport struct {
So_ResultEntryID int `db:"So_ResultEntryID"`
So_ResultEntryT_OrderHeaderID int `db:"So_ResultEntryT_OrderHeaderID"`
So_ResultEntryNonlab_TemplateID int `db:"So_ResultEntryNonlab_TemplateID"`
So_ResultEntryNonlab_TemplateName string `db:"So_ResultEntryNonlab_TemplateName"`
}
type TabViewReportMcu struct {
Name string
Link string
}

157
models/pasien.models.go Normal file
View File

@@ -0,0 +1,157 @@
package models
import (
"mime/multipart"
"github.com/a-h/templ"
)
type Pasien struct {
M_PatientID int `db:"M_PatientID"`
M_PatientNoReg string `db:"M_PatientNoReg"`
M_PatientM_TitleID string `db:"M_PatientM_TitleID"`
M_PatientPrefix string `db:"M_PatientPrefix"`
M_PatientName string `db:"M_PatientName"`
M_PatientSuffix string `db:"M_PatientSuffix"`
M_PatientGender string `db:"M_PatientGender"`
M_PatientDOB string `db:"M_PatientDOB"`
M_PatientReligionCode string `db:"M_PatientReligionCode"`
M_PatientReligionSystem string `db:"M_PatientReligionSystem"`
M_PatientBloodTypeCode string `db:"M_PatientBloodTypeCode"`
M_PatientBloodTypeSystem string `db:"M_PatientBloodTypeSystem"`
M_PatientBloodRhCode string `db:"M_PatientBloodRhCode"`
M_PatientBloodRhSystem string `db:"M_PatientBloodRhSystem"`
M_PatientEducationCode string `db:"M_PatientEducationCode"`
M_PatientEducationSystem string `db:"M_PatientEducationSystem"`
M_PatientCitizenship string `db:"M_PatientCitizenship"`
M_PatientEtnicCode string `db:"M_PatientEtnicCode"`
M_PatientEtnicSystem string `db:"M_PatientEtnicSystem"`
M_PatientIdentifierCode string `db:"M_PatientIdentifierCode"`
M_PatientIdentifierSystem string `db:"M_PatientIdentifierSystem"`
M_PatientIdentifierValue string `db:"M_PatientIdentifierValue"`
M_PatientJob string `db:"M_PatientJob"`
M_PatientPosisi string `db:"M_PatientPosisi"`
M_PatientDivisi string `db:"M_PatientDivisi"`
M_PatientHp string `db:"M_PatientHp"`
M_PatientEmail string `db:"M_PatientEmail"`
M_PatientPhoto string `db:"M_PatientPhoto"`
M_PatientPhotoLastUpdated string `db:"M_PatientPhotoLastUpdated"`
M_PatientPhotoLastUpdatedUserID string `db:"M_PatientPhotoLastUpdatedUserID"`
M_PatientAddress string `db:"M_PatientAddress"`
M_PatientAddressRegionalCd string `db:"M_PatientAddressRegionalCd"`
M_PatientAddressCity string `db:"M_PatientAddressCity"`
M_PatientAddressDistrict string `db:"M_PatientAddressDistrict"`
M_PatientAddressState string `db:"M_PatientAddressState"`
M_PatientAddressCountry string `db:"M_PatientAddressCountry"`
M_PatientIsActive string `db:"M_PatientIsActive"`
M_PatientCreated string `db:"M_PatientCreated"`
M_PatientCreatedUserID string `db:"M_PatientCreatedUserID"`
M_PatientLastUpdated string `db:"M_PatientLastUpdated"`
M_PatientLastUpdatedUserID string `db:"M_PatientLastUpdatedUserID"`
M_PatientDeletedUserID string `db:"M_PatientDeletedUserID"`
M_PatientDeleted string `db:"M_PatientDeleted"`
}
type SapaanPasien struct {
M_TitleID int `db:"M_TitleID"`
M_TitleName string `db:"M_TitleName"`
M_TitleGender string `db:"M_TitleGender"`
M_TitleOrder string `db:"M_TitleOrder"`
M_TitleIsActive string `db:"M_TitleIsActive"`
M_TitleCreated string `db:"M_TitleCreated"`
M_TitleCreatedUserID string `db:"M_TitleCreatedUserID"`
M_TitleLastUpdated string `db:"M_TitleLastUpdated"`
M_TitleLastUpdatedUserID string `db:"M_TitleLastUpdatedUserID"`
M_TitleDeleted string `db:"M_TitleDeleted"`
M_TitleDeletedUserID string `db:"M_TitleDeletedUserID"`
}
type PasienFormComponent struct {
IDComponent string
Link string
HxTarget string
HxSwap string
HxInclude string
ModalID string
ModalTitle string
DialogBody templ.Component
DialogAction templ.Component
ButtonCLose templ.Component
}
type PasineFormBodyComponent struct {
IDComponentUpload string
IDForm string
SapaanErr string `json:"sapaanErr"`
SapaanItems templ.Component
ImbuhanAwalErr string `json:"imbuhanAwalErr"`
ImbuhanAwalVal string `json:"imbuhanAwalVal"`
NamaErr string `json:"namaErr"`
NamaVal string `json:"namaVal"`
ImbuhanAkhirErr string `json:"imbuhanAkhirErr"`
ImbuhanAkhirVal string `json:"imbuhanAkhirVal"`
GenderErr string `json:"genderErr"`
GenderItems templ.Component
DobErr string `json:"dobErr"`
DobVal string `json:"dobVal"`
YearErr string `json:"yearErr"`
YearVal string `json:"yearVal"`
MonthErr string `json:"monthErr"`
MonthVal string `json:"monthVal"`
DayErr string `json:"DayErr"`
DayVal string `json:"DayVal"`
GoldarErr string `json:"goldarErr"`
GoldarItems templ.Component
RhesusErr string `json:"rhesusErr"`
RhesusItems templ.Component
PekerjaanErr string `json:"pekerjaanErr"`
PekerjaanVal string `json:"pekerjaanVal"`
DepartementErr string `json:"departementErr"`
DepartementVal string `json:"departementVal"`
PosisiErr string `json:"posisiErr"`
PosisiVal string `json:"posisiVal"`
PendidikanErr string `json:"pendidikanErr"`
PendidikanItems templ.Component
EtnisErr string `json:"etnisErr"`
EtnisItems templ.Component
IDErr string `json:"idErr"`
IDItems templ.Component
NoIDErr string `json:"noIDErr"`
NoIDhVal string `json:"noIDhVal"`
HpErr string `json:"hpErr"`
HpVal string `json:"hpVal"`
EmailErr string `json:"emailErr"`
EmailVal string `json:"emailVal"`
HxOnLoad templ.ComponentScript
HxSwapOOB string
LinkFoto string
IDPasien string
CitizenshipVal string `json:"CitizenshipVal"`
}
type PasienFormServicesPrm struct {
PasienID string
Sapaan string
Imbuhanawal string
Nama string
Imbuhanakhir string
Gender string
Dob string
Tahun string
Bulan string
Hari string
Goldar string
Rhesus string
Pekerjaan string
Departement string
Posisi string
Pendidikan string
Nationality string
Etnis string
Identitas string
Nomoridentitas string
Hp string
Email string
UserID string
Foto *multipart.FileHeader
}

View File

@@ -1,7 +0,0 @@
package models
type KelainanFisikDataModel struct {
Test string `db:"test"`
Total int `db:"total"`
Mcu_KelainanClasification string `db:"Mcu_KelainanClasification"`
}

View File

@@ -1,11 +0,0 @@
package models
type KelainanGlobalMCUModel struct {
Test string `db:"Test"`
Total int `db:"total"`
}
type KelainanGlobalFisikModel struct {
Mcu_KelainanName string `db:"Mcu_KelainanName"`
Total int `db:"total"`
}

View File

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

View File

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

View File

@@ -1,16 +0,0 @@
package models
type TotalPesertaModel struct {
Peserta int `db:"peserta"`
Mgm_McuTotalParticipant int `db:"Mgm_McuTotalParticipant"`
}
type GenderPesertaModel struct {
M_PatientGender string `db:"M_PatientGender"`
Jumlah int `db:"Jumlah"`
}
type UmurPesertaModel struct {
Umur string `db:"umur"`
Total int `db:"total"`
}

View File

@@ -1,6 +1,8 @@
package models
import "database/sql"
import (
"database/sql"
)
type TerminologyV0 struct {
ResourceType string `db:"resource_type"`

View File

@@ -16,10 +16,6 @@ import (
var Handle *sql.DB
var Handlex *sqlx.DB
// log
var HandleLog *sql.DB
var HandlexLog *sqlx.DB
func InitDB() {
println(config.Data.Get("DBhost"))
if config.Data.Get("DBhost") == "" {
@@ -32,15 +28,6 @@ func InitDB() {
}
Handle = handle
// log handle
handlelog, err := sql.Open("sqlite", config.Data.Get("DBnamelog"))
if err != nil {
// log.Fatalf("🔥 failed to connect to the database: %s", err.Error())
log.Panic(err)
}
HandleLog = handlelog
// log handle
db, err := sqlx.Open("sqlite", config.Data.Get("DBname"))
if err != nil {
@@ -48,16 +35,6 @@ func InitDB() {
}
Handlex = db
// log
dblog, err := sqlx.Open("sqlite", config.Data.Get("DBnamelog"))
if err != nil {
log.Fatal(err)
}
HandlexLog = dblog
// log
} else {
println("mysql")
dsn := config.Data.Get("DBuser") + ":" + config.Data.Get("DBpass") + "@tcp(" + config.Data.Get("DBhost") + ":" + config.Data.Get("DBport") + ")/" + config.Data.Get("DBname")
@@ -73,21 +50,6 @@ func InitDB() {
}
Handle = handle
// log
dsnlog := config.Data.Get("DBuser") + ":" + config.Data.Get("DBpass") + "@tcp(" + config.Data.Get("DBhost") + ":" + config.Data.Get("DBport") + ")/" + config.Data.Get("DBnamelog")
println(dsnlog)
handlelog, err := sql.Open("mysql", dsnlog)
if err != nil {
log.Panic(err)
}
if err = handlelog.Ping(); err != nil {
log.Panic(err)
}
HandleLog = handlelog
// log
// sqlx
db, err := sqlx.Open("mysql", dsn)
@@ -97,16 +59,6 @@ func InitDB() {
Handlex = db
// log
dblog, err := sqlx.Open("mysql", dsnlog)
if err != nil {
log.Fatal(err)
}
HandlexLog = dblog
// log
}
log.Println("🚀 Connected Successfully to the Database")

View File

@@ -1,147 +0,0 @@
package corporate_services
import (
"cpone/db"
"cpone/models"
dbx "cpone/package/database"
"fmt"
"math"
"go.uber.org/zap"
)
type DashboardPicServices struct {
DashboardPicStore db.AppStore
}
func NewDashboardPicServices(uStore db.AppStore) *DashboardPicServices {
return &DashboardPicServices{
DashboardPicStore: uStore,
}
}
func (ea *DashboardPicServices) GetEmployeeAnalyticBreadcrumb(title string) (models.BreadCrumbV1, error) {
breadcrumb := models.BreadCrumbV1{
Title: title,
Item: []models.ItemBreadCrumbV1{
{
Item: "Dashboard",
Url: "/corp/dashboard_pic",
},
{
Item: "Employee Health Medical Analytic",
Url: "",
},
},
}
return breadcrumb, nil
}
func (ea *DashboardPicServices) DummyDataTest() ([]models.DashboardPic, error) {
employees := []models.DashboardPic{
{
Mgm_McuID: 1,
Mgm_McuLabel: "Employee 1",
Mgm_McuFlagRelasiBayarSendiri: "Yes",
Mgm_McuBisaTambahPemeriksaan: "No",
Mgm_McuCorporateID: 101,
Mgm_McuNumber: "EMP001",
Mgm_McuNumberNational: "NAT001",
Mgm_McuNote: "Lorem ipsum dolor sit amet.",
Mgm_McuStartDate: "2024-01-01",
Mgm_McuEndDate: "2024-12-31",
Mgm_McuIsActive: "Y",
},
{
Mgm_McuID: 2,
Mgm_McuLabel: "Employee 2",
Mgm_McuFlagRelasiBayarSendiri: "No",
Mgm_McuBisaTambahPemeriksaan: "Yes",
Mgm_McuCorporateID: 102,
Mgm_McuNumber: "EMP002",
Mgm_McuNumberNational: "NAT002",
Mgm_McuNote: "Lorem ipsum dolor sit amet consectetur.",
Mgm_McuStartDate: "2024-02-15",
Mgm_McuEndDate: "2024-11-30",
Mgm_McuIsActive: "Y",
},
}
return employees, nil
}
func (ea *DashboardPicServices) GetCorporateName(userID string) (string, error) {
var corpName string
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'
`
if err := dbx.Handlex.Get(&corpName, q, userID); err != nil {
return "PT. ABC", err
}
return corpName, nil
}
func (ea *DashboardPicServices) ListingDashboardPic(search string, startdate string, enddate string, currentpage int, rowperpage int) ([]models.DashboardPic, int, error) {
logger, _ := zap.NewProduction()
var ret []models.DashboardPic
var totalData int
if len(startdate) == 0 {
startdate = "1900-01-01"
}
if len(enddate) == 0 {
enddate = "9999-12-12"
}
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)
}
q = `
SELECT
Mgm_McuID,
Mgm_McuLabel,
Mgm_McuFlagRelasiBayarSendiri,
Mgm_McuBisaTambahPemeriksaan,
Mgm_McuCorporateID,
Mgm_McuNumber,
Mgm_McuNumberNational,
Mgm_McuNote,
DATE_FORMAT(Mgm_McuStartDate, '%d-%m-%Y') AS Mgm_McuStartDate,
DATE_FORMAT(Mgm_McuEndDate, '%d-%m-%Y') AS Mgm_McuEndDate,
Mgm_McuIsActive
FROM mgm_mcu
WHERE 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 {
return nil, 0, fmt.Errorf("error query get data: %v", err)
}
logger.Info("Resp", zap.Any("Respsone", ret))
totalPage := int(math.Ceil(float64(totalData) / float64(rowperpage)))
return ret, totalPage, nil
}

View File

@@ -1,65 +0,0 @@
package corporate_services
import (
"cpone/db"
"cpone/models"
dbx "cpone/package/database"
)
type McuDetailServices struct {
McuDetailStore db.AppStore
}
func NewMcuDetailServices(uStore db.AppStore) *McuDetailServices {
return &McuDetailServices{
McuDetailStore: uStore,
}
}
func (mcud *McuDetailServices) GetBreadcrumb(id string) (models.BreadCrumbV1, error) {
var mcu models.DashboardPic
breadcrumb := models.BreadCrumbV1{
Title: "",
Item: []models.ItemBreadCrumbV1{
{
Item: "Dashboard",
Url: "/corp/dashboard_pic",
},
{
Item: "Employee Health Medical Analytic",
Url: "/corp/dashboard_pic",
},
{
Item: "",
Url: "",
},
},
}
q := `
SELECT
Mgm_McuID,
Mgm_McuLabel,
Mgm_McuFlagRelasiBayarSendiri,
Mgm_McuBisaTambahPemeriksaan,
Mgm_McuCorporateID,
Mgm_McuNumber,
Mgm_McuNumberNational,
Mgm_McuNote,
DATE_FORMAT(Mgm_McuStartDate, '%d-%m-%Y') AS Mgm_McuStartDate,
DATE_FORMAT(Mgm_McuEndDate, '%d-%m-%Y') AS Mgm_McuEndDate,
Mgm_McuIsActive
FROM mgm_mcu
WHERE Mgm_McuIsActive = 'Y'
AND Mgm_McuID = ?
`
if err := dbx.Handlex.Get(&mcu, q, id); err != nil {
return breadcrumb, err
}
breadcrumb.Title = mcu.Mgm_McuLabel
breadcrumb.Item[2].Item = mcu.Mgm_McuLabel
return breadcrumb, nil
}

View File

@@ -1,146 +0,0 @@
package mcu_corporate_services
import (
"cpone/db"
"cpone/models"
dbx "cpone/package/database"
"fmt"
"math"
"strconv"
"go.uber.org/zap"
)
type TabDaftarPesertaServices struct {
TabDaftarPesertaStore db.AppStore
}
func NewTabDaftarPesertaServices(uStore db.AppStore) *TabDaftarPesertaServices {
return &TabDaftarPesertaServices{
TabDaftarPesertaStore: uStore,
}
}
func (tdps *TabDaftarPesertaServices) GetListMcuDaftarPeserta(id string, currentpage int, rowperpage int) ([]models.ModelMcuDaftarPeserta, int, error) {
logger, _ := zap.NewProduction()
var listDaftarPeserta []models.ModelMcuDaftarPeserta
var totalData int
offset := (currentpage - 1) * rowperpage
querytotal := `SELECT COUNT(*)
FROM t_orderheader
JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID
AND M_PatientIsActive = 'Y'
WHERE T_OrderHeaderIsActive = 'Y' AND T_OrderHeaderMgm_McuID = ?`
if err := dbx.Handlex.Get(&totalData, querytotal, id); err != nil {
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 = ?
ORDER BY T_OrderHeaderLabNumber ASC
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
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 = `
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
`
if err := dbx.Handlex.Select(&data, q, 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)
}
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
}

View File

@@ -1,207 +0,0 @@
package mcu_corporate_services
import (
"cpone/db"
"cpone/models"
dbx "cpone/package/database"
"fmt"
"strconv"
"go.uber.org/zap"
)
type TabKelainanFisikServices struct {
TabKelainanFisikStore db.AppStore
}
func NewTabKelainanFisikServices(store db.AppStore) *TabKelainanFisikServices {
return &TabKelainanFisikServices{
TabKelainanFisikStore: store,
}
}
func (tkf *TabKelainanFisikServices) GetPieChartConf(title string, subtext string, data []models.SeriesData) (models.Piechart, error) {
option := models.Piechart{
Title: struct {
Text string `json:"text"`
SubText string `json:"subtext"`
Left string `json:"left"`
}{
Text: title,
SubText: subtext,
Left: "center",
},
Tooltip: struct {
Trigger string `json:"trigger"`
}{
Trigger: "item",
},
Legend: struct {
Top string `json:"top"`
Left string `json:"left"`
Orient string `json:"orient"`
Height int `json:"height"`
}{
Top: "bottom",
Left: "center",
Orient: "vertical",
Height: 75,
},
Series: []models.Series{
{
Label: struct {
Position string `json:"position"`
Formatter string `json:"formatter"`
}{
Position: "inner",
Formatter: "{d}%",
},
Name: "Access From",
Type: "pie",
Radius: []string{"20%", "50%"},
ItemStyle: struct {
BorderRadius int `json:"borderRadius"`
BorderColor string `json:"borderColor"`
BorderWidth int `json:"borderWidth"`
}{
BorderRadius: 10,
BorderColor: "#fff",
BorderWidth: 2,
},
Data: data,
Emphasis: struct {
ItemStyle struct {
ShadowBlur int `json:"shadowBlur"`
ShadowOffsetX int `json:"shadowOffsetX"`
ShadowColor string `json:"shadowColor"`
} `json:"itemStyle"`
}{
ItemStyle: struct {
ShadowBlur int `json:"shadowBlur"`
ShadowOffsetX int `json:"shadowOffsetX"`
ShadowColor string `json:"shadowColor"`
}{
ShadowBlur: 10,
ShadowOffsetX: 0,
ShadowColor: "rgba(0, 0, 0, 0.5)",
},
},
},
},
}
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
`
if err := dbx.Handlex.Select(&data, q, mcuID); err != nil {
return option, fmt.Errorf("error get data kel fisik bmi %v", err)
}
defer logger.Sync()
logger.Info("resp data", zap.Any("data", data))
title := "Status Index Masa Tubuh (BMI)"
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 & insert data into chart: %v", err)
}
return option, nil
}
func (tkf *TabKelainanFisikServices) GetKelainanFisikHipertensi(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 = '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
`
if err := dbx.Handlex.Select(&data, q, mcuID); err != nil {
return option, fmt.Errorf("error get data kel fisik hipertensi: %v", err)
}
defer logger.Sync()
logger.Info("resp data", zap.Any("data", data))
title := "Kriteria Hipertensi"
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 piechart : %v", err)
}
return option, nil
}

View File

@@ -1,201 +0,0 @@
package mcu_corporate_services
import (
"cpone/db"
"cpone/models"
dbx "cpone/package/database"
"fmt"
"math"
"strconv"
"go.uber.org/zap"
)
type TabKelainanGlobalServices struct {
TabKelainanGlobalServicesStore db.AppStore
}
func NewTabKelainanGlobalServices(store db.AppStore) *TabKelainanGlobalServices {
return &TabKelainanGlobalServices{
TabKelainanGlobalServicesStore: store,
}
}
func (tkg *TabKelainanGlobalServices) GetBarChartConf(title string, data models.BarDataset) (models.Barchart, error) {
option := models.Barchart{}
option.Title = struct {
Text string "json:\"text\""
}{title}
option.Dataset = data
option.Grid.ContainLabel = true
option.XAxis.Name = "amount"
option.YAxis.Type = "category"
option.VisualMap.Orient = "horizontal"
option.VisualMap.Left = "center"
option.VisualMap.Min = 10
option.VisualMap.Max = 100
option.VisualMap.Show = false
option.VisualMap.Dimension = 0
option.VisualMap.InRange.Color = []string{"#42aaf5", "#00eaf2", "#035bff"}
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: "score",
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",
},
}
return option, nil
}
func (tkg *TabKelainanGlobalServices) GetKelainanGlobalMCU(mcuID string) (models.Barchart, error) {
logger, _ := zap.NewProduction()
var option models.Barchart
var data []models.KelainanGlobalMCUModel
q := `
SELECT
IFNULL(Nat_TestName ,Mcu_KelainanGroupName) AS Test,
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
LEFT JOIN nat_test ON Nat_TestCode = Mgm_HeaderNat_TestCode
WHERE Mgm_HeaderIsActive = 'Y' AND Mgm_HeaderMgm_McuID = ?
AND Mgm_HeaderIsNormal = 'N'
GROUP BY Mcu_KelainanGroupID ORDER BY COUNT(Mgm_HeaderT_OrderHeaderID) DESC
`
// Mgm_DetailMcu_KelainanID ->> versi php
// Mcu_KelainanGroupID ->> versi excel
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 := "Kelainan MCU"
chartData := models.BarDataset{
Source: [][]interface{}{
{"score", "amount", "product", "percentage"},
},
}
max := 1
for _, d := range data {
if d.Total >= max {
max = d.Total
}
}
for _, 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,
})
}
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) GetKelainanFisik(mcuID string) (models.Barchart, error) {
logger, _ := zap.NewProduction()
var option models.Barchart
var data []models.KelainanGlobalFisikModel
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 = 'F'
AND Mgm_HeaderIsNormal = 'N'
GROUP BY Mcu_KelainanID
ORDER BY total DESC
`
if err := dbx.Handlex.Select(&data, q, mcuID); err != nil {
return option, fmt.Errorf("error get data kelainan global fisik %v", err)
}
defer logger.Sync()
logger.Info("resp data", zap.Any("data", data))
title := "Kelainan Fisik"
chartData := models.BarDataset{
Source: [][]interface{}{
{"score", "amount", "product", "percentage"},
},
}
max := 1
for _, d := range data {
if d.Total >= max {
max = d.Total
}
}
for _, 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.Mcu_KelainanName, percentStr,
})
}
option, err := tkg.GetBarChartConf(title, chartData)
if err != nil {
return option, nil
}
return option, nil
}

View File

@@ -1,448 +0,0 @@
package mcu_corporate_services
import (
"cpone/db"
"cpone/models"
dbx "cpone/package/database"
"fmt"
"math"
"strconv"
"go.uber.org/zap"
)
type TabKelainanLabServices struct {
TabKelainanLabStore db.AppStore
}
func NewTabKelainanLabServices(store db.AppStore) *TabKelainanLabServices {
return &TabKelainanLabServices{
TabKelainanLabStore: store,
}
}
func (tkl *TabKelainanLabServices) ConfBarchart(title string, data models.BarDataset) (models.Barchart, error) {
option := models.Barchart{}
option.Title = struct {
Text string "json:\"text\""
}{title}
option.Dataset = data
option.Grid.ContainLabel = true
option.XAxis.Name = "amount"
option.YAxis.Type = "category"
option.VisualMap.Orient = "horizontal"
option.VisualMap.Left = "center"
option.VisualMap.Min = 1
option.VisualMap.Max = 100
option.VisualMap.Show = false
option.VisualMap.Dimension = 0
option.VisualMap.InRange.Color = []string{"#42aaf5", "#00eaf2", "#035bff"}
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: "score",
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",
},
}
return option, nil
}
func (tkl *TabKelainanLabServices) ConfBarchartVertical(title string, data []models.KelainanLabModel) (models.BarchartV2, error) {
chartData := models.BarDataset{
Source: [][]interface{}{
{"score", "amount", "product"},
},
}
cnt := len(data)
for idx, d := range data {
chartData.Source = append(chartData.Source, []interface{}{
idx, d.Total, d.Mcu_KelainanName,
})
}
option := models.BarchartV2{
Title: struct {
Text string "json:\"text\""
}{title},
Dataset: struct {
Source [][]interface{} "json:\"source\""
}{chartData.Source},
Grid: struct {
ContainLabel bool "json:\"containLabel\""
}{true},
XAxis: struct {
Name string "json:\"name\""
Type string "json:\"type\""
AxisLabel struct {
Interval int "json:\"interval\""
Rotate int "json:\"rotate\""
} "json:\"axisLabel\""
}{
Name: "",
Type: "category",
AxisLabel: struct {
Interval int "json:\"interval\""
Rotate int "json:\"rotate\""
}{
Interval: 0,
Rotate: 0,
},
},
YAxis: struct {
Type string "json:\"type\""
Name string "json:\"name\""
NameTextStyle struct {
Align string "json:\"align\""
} "json:\"nameTextStyle\""
NameGap int "json:\"nameGap\""
}{
Type: "value",
Name: "",
NameTextStyle: struct {
Align string "json:\"align\""
}{
Align: "right",
},
NameGap: 20,
},
VisualMap: struct {
Orient string "json:\"orient\""
Left string "json:\"left\""
Min int "json:\"min\""
Max int "json:\"max\""
Dimension int "json:\"dimension\""
Show bool "json:\"show\""
InRange struct {
Color []string "json:\"color\""
} "json:\"inRange\""
}{
Orient: "horizontal",
Left: "center",
Min: 0,
Max: cnt,
Dimension: 0,
Show: false,
InRange: struct {
Color []string "json:\"color\""
}{
Color: []string{"#42aaf5", "#00eaf2", "#035bff"},
},
},
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: "inside",
Show: true,
Formatter: "{@[1]}",
},
Type: "bar",
Encode: struct {
X string "json:\"x\""
Y string "json:\"y\""
}{
X: "product",
Y: "amount",
},
},
},
Tooltip: struct {
Trigger string "json:\"trigger\""
AxisPointer struct {
Type string "json:\"type\""
} "json:\"axisPointer\""
}{
Trigger: "axis",
AxisPointer: struct {
Type string "json:\"type\""
}{
Type: "shadow",
},
},
}
return option, nil
}
func (tkl *TabKelainanLabServices) GetDataPresentaseKelainanLab(mcuID string) (models.Barchart, error) {
logger, _ := zap.NewProduction()
var option models.Barchart
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
`
if err := dbx.Handlex.Select(&data, q, mcuID); err != nil {
return option, fmt.Errorf("error get total presentase fisik %v", err)
}
defer logger.Sync()
logger.Info("resp data", zap.Any("data", data))
title := "Data Presentase Kelainan Lab"
chartData := models.BarDataset{
Source: [][]interface{}{
{"score", "amount", "product", "percentage"},
},
}
max := 1
for _, d := range data {
if d.Total >= max {
max = d.Total
}
}
for _, 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.Mcu_KelainanName, percentStr,
})
}
option, err := tkl.ConfBarchart(title, chartData)
if err != nil {
return option, fmt.Errorf("error insert data to chart %v", err)
}
return option, nil
}
func (tkl *TabKelainanLabServices) GetHematologi(mcuID string) (models.BarchartV2, error) {
logger, _ := zap.NewProduction()
var option 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 = 14
GROUP BY Mcu_KelainanID
ORDER BY COUNT(Mgm_HeaderT_OrderHeaderID) DESC
`
if err := dbx.Handlex.Select(&data, q, mcuID); err != nil {
return option, fmt.Errorf("error get hematologi %v", err)
}
defer logger.Sync()
logger.Info("resp data", zap.Any("data", data))
title := "Hematologi"
option, err := tkl.ConfBarchartVertical(title, data)
if err != nil {
return option, fmt.Errorf("error insert data to chart %v", err)
}
return option, nil
}
func (tkl *TabKelainanLabServices) GetUrinalisa(mcuID string) (models.BarchartV2, error) {
logger, _ := zap.NewProduction()
var option 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
`
if err := dbx.Handlex.Select(&data, q, mcuID); err != nil {
return option, fmt.Errorf("error get urinalisa %v", err)
}
defer logger.Sync()
logger.Info("resp data", zap.Any("data", data))
title := "Urinalisa"
option, err := tkl.ConfBarchartVertical(title, data)
if err != nil {
return option, fmt.Errorf("error insert data to chart %v", err)
}
return option, nil
}
func (tkl *TabKelainanLabServices) GetGangguanFungsiHati(mcuID string) (models.BarchartV2, error) {
logger, _ := zap.NewProduction()
var option 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 = 16
GROUP BY Mcu_KelainanID
ORDER BY COUNT(Mgm_HeaderT_OrderHeaderID) DESC
`
if err := dbx.Handlex.Select(&data, q, mcuID); err != nil {
return option, fmt.Errorf("error get gangguan fungsi hati %v", err)
}
defer logger.Sync()
logger.Info("resp data", zap.Any("data", data))
title := "Gangguan Fungsi Hati"
option, err := tkl.ConfBarchartVertical(title, data)
if err != nil {
return option, fmt.Errorf("error insert data to chart %v", err)
}
return option, nil
}
func (tkl *TabKelainanLabServices) GetGangguanMetabolismeLemak(mcuID string) (models.BarchartV2, error) {
logger, _ := zap.NewProduction()
var option models.BarchartV2
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
`
if err := dbx.Handlex.Select(&data, q, mcuID); err != nil {
return option, fmt.Errorf("error get gangguan metabolisme lemak %v", err)
}
defer logger.Sync()
logger.Info("resp data", zap.Any("data", data))
title := "Gangguan Metabolisme Lemak"
option, err := tkl.ConfBarchartVertical(title, data)
if err != nil {
return option, fmt.Errorf("error insert data to chart %v", err)
}
return option, nil
}
func (tkl *TabKelainanLabServices) GetPeningkatanGlukosa(mcuID string) (models.BarchartV2, error) {
logger, _ := zap.NewProduction()
var option models.BarchartV2
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
`
if err := dbx.Handlex.Select(&data, q, mcuID); err != nil {
return option, fmt.Errorf("error get peningkatan glukosa %v", err)
}
defer logger.Sync()
logger.Info("resp data", zap.Any("data", data))
title := "Peningkatan Glukosa"
option, err := tkl.ConfBarchartVertical(title, data)
if err != nil {
return option, fmt.Errorf("error insert data to chart %v", err)
}
return option, nil
}

View File

@@ -1,309 +0,0 @@
package mcu_corporate_services
import (
"cpone/db"
"cpone/models"
dbx "cpone/package/database"
"fmt"
"math"
"strconv"
"go.uber.org/zap"
)
type TabKelainanNonLabServices struct {
TabKelainanNonLabStore db.AppStore
}
func NewTabKelainanNonLabServices(store db.AppStore) *TabKelainanNonLabServices {
return &TabKelainanNonLabServices{
TabKelainanNonLabStore: store,
}
}
func (tknl *TabKelainanNonLabServices) GetBarChartConf(title string, data models.BarDataset) (models.Barchart, error) {
option := models.Barchart{}
option.Title = struct {
Text string "json:\"text\""
}{title}
option.Dataset = data
option.Grid.ContainLabel = true
option.XAxis.Name = "amount"
option.YAxis.Type = "category"
option.VisualMap.Orient = "horizontal"
option.VisualMap.Left = "center"
option.VisualMap.Min = 10
option.VisualMap.Max = 100
option.VisualMap.Show = false
option.VisualMap.Dimension = 0
option.VisualMap.InRange.Color = []string{"#42aaf5", "#00eaf2", "#035bff"}
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",
},
}
return option, nil
}
func (tknl *TabKelainanNonLabServices) ConfBarchartVertical(title string, data []models.KelNonLabModel) (models.BarchartV2, error) {
chartData := models.BarDataset{
Source: [][]interface{}{
{"score", "amount", "product"},
},
}
cnt := len(data)
for idx, d := range data {
chartData.Source = append(chartData.Source, []interface{}{
idx, d.Total, d.Kelainan,
})
}
option := models.BarchartV2{
Title: struct {
Text string "json:\"text\""
}{title},
Dataset: struct {
Source [][]interface{} "json:\"source\""
}{chartData.Source},
Grid: struct {
ContainLabel bool "json:\"containLabel\""
}{true},
XAxis: struct {
Name string "json:\"name\""
Type string "json:\"type\""
AxisLabel struct {
Interval int "json:\"interval\""
Rotate int "json:\"rotate\""
} "json:\"axisLabel\""
}{
Name: "",
Type: "category",
AxisLabel: struct {
Interval int "json:\"interval\""
Rotate int "json:\"rotate\""
}{
Interval: 0,
Rotate: 0,
},
},
YAxis: struct {
Type string "json:\"type\""
Name string "json:\"name\""
NameTextStyle struct {
Align string "json:\"align\""
} "json:\"nameTextStyle\""
NameGap int "json:\"nameGap\""
}{
Type: "value",
Name: "",
NameTextStyle: struct {
Align string "json:\"align\""
}{
Align: "right",
},
NameGap: 20,
},
VisualMap: struct {
Orient string "json:\"orient\""
Left string "json:\"left\""
Min int "json:\"min\""
Max int "json:\"max\""
Dimension int "json:\"dimension\""
Show bool "json:\"show\""
InRange struct {
Color []string "json:\"color\""
} "json:\"inRange\""
}{
Orient: "horizontal",
Left: "center",
Min: 0,
Max: cnt,
Dimension: 0,
Show: false,
InRange: struct {
Color []string "json:\"color\""
}{
Color: []string{"#42aaf5", "#00eaf2", "#035bff"},
},
},
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: "inside",
Show: true,
Formatter: "{@[1]}",
},
Type: "bar",
Encode: struct {
X string "json:\"x\""
Y string "json:\"y\""
}{
X: "product",
Y: "amount",
},
},
},
Tooltip: struct {
Trigger string "json:\"trigger\""
AxisPointer struct {
Type string "json:\"type\""
} "json:\"axisPointer\""
}{
Trigger: "axis",
AxisPointer: struct {
Type string "json:\"type\""
}{
Type: "shadow",
},
},
}
return option, nil
}
func (tknl *TabKelainanNonLabServices) GetDataKelNonLab(mcuID string) (models.Barchart, error) {
logger, _ := zap.NewProduction()
var option models.Barchart
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
`
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"
chartData := models.BarDataset{
Source: [][]interface{}{
{"score", "amount", "product", "percentage"},
},
}
max := 1
for _, d := range data {
if d.Total >= max {
max = d.Total
}
}
for _, 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.Kelainan, percentStr,
})
}
option, err := tknl.GetBarChartConf(title, chartData)
if err != nil {
return option, fmt.Errorf("error insert data to barchart %v", err)
}
return option, nil
}
func (tknl *TabKelainanNonLabServices) GetThoraxPA(mcuID string) (models.BarchartV2, error) {
logger, _ := zap.NewProduction()
var option models.BarchartV2
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
`
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 := "Thorax PA"
option, err := tknl.ConfBarchartVertical(title, data)
if err != nil {
return option, fmt.Errorf("error insert data into chart %v", err)
}
return option, nil
}

View File

@@ -1,250 +0,0 @@
package mcu_corporate_services
import (
"cpone/db"
"cpone/models"
dbx "cpone/package/database"
"fmt"
"strconv"
"go.uber.org/zap"
)
type TabKepersertaanServices struct {
TabKepersertaanServiceStore db.AppStore
}
func NewTabKepersertaanService(store db.AppStore) *TabKepersertaanServices {
return &TabKepersertaanServices{
TabKepersertaanServiceStore: store,
}
}
func (tkp *TabKepersertaanServices) GetPieChartConf(title string, subtext string, data []models.SeriesData) (models.Piechart, error) {
option := models.Piechart{
Title: struct {
Text string `json:"text"`
SubText string `json:"subtext"`
Left string `json:"left"`
}{
Text: title,
SubText: subtext,
Left: "center",
},
Tooltip: struct {
Trigger string `json:"trigger"`
}{
Trigger: "item",
},
Legend: struct {
Top string `json:"top"`
Left string `json:"left"`
Orient string `json:"orient"`
Height int `json:"height"`
}{
Top: "bottom",
Left: "center",
Orient: "vertical",
Height: 75,
},
Series: []models.Series{
{
Label: struct {
Position string `json:"position"`
Formatter string `json:"formatter"`
}{
Position: "inner",
Formatter: "{d}%",
},
Name: "Access From",
Type: "pie",
Radius: []string{"20%", "50%"},
ItemStyle: struct {
BorderRadius int `json:"borderRadius"`
BorderColor string `json:"borderColor"`
BorderWidth int `json:"borderWidth"`
}{
BorderRadius: 10,
BorderColor: "#fff",
BorderWidth: 2,
},
Data: data,
Emphasis: struct {
ItemStyle struct {
ShadowBlur int `json:"shadowBlur"`
ShadowOffsetX int `json:"shadowOffsetX"`
ShadowColor string `json:"shadowColor"`
} `json:"itemStyle"`
}{
ItemStyle: struct {
ShadowBlur int `json:"shadowBlur"`
ShadowOffsetX int `json:"shadowOffsetX"`
ShadowColor string `json:"shadowColor"`
}{
ShadowBlur: 10,
ShadowOffsetX: 0,
ShadowColor: "rgba(0, 0, 0, 0.5)",
},
},
},
},
}
return option, nil
}
func (tkp *TabKepersertaanServices) GetTotalKepesertaanMCU(mcuID string) (models.Piechart, error) {
logger, _ := zap.NewProduction()
var option models.Piechart
var data models.TotalPesertaModel
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'
`
if err := dbx.Handlex.Get(&data, q, mcuID); err != nil {
return option, fmt.Errorf("error get total participant %v", err)
}
defer logger.Sync()
logger.Info("resp data", zap.Any("data", data))
title := "Peserta MCU"
subtext := "Total Peserta " + strconv.Itoa(data.Mgm_McuTotalParticipant)
chartData := []models.SeriesData{}
if data.Mgm_McuTotalParticipant == 0 {
chartData = append(chartData, models.SeriesData{Value: 0, Name: "No Data"})
} else {
chartData = []models.SeriesData{
{
Value: data.Peserta,
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",
},
}
}
option, err := tkp.GetPieChartConf(title, subtext, chartData)
if err != nil {
return option, fmt.Errorf("error get piechart total peserta: %v", err)
}
return option, nil
}
func (tkp *TabKepersertaanServices) GetKepesertaanByGender(mcuID string) (models.Piechart, error) {
logger, _ := zap.NewProduction()
var option models.Piechart
var data []models.GenderPesertaModel
title := "Peserta MCU"
subtext := "Berdasarkan jenis kelamin"
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 = ?
GROUP BY M_PatientGender
`
if err := dbx.Handlex.Select(&data, q, mcuID); err != nil {
return option, fmt.Errorf("error get total gender %v", err)
}
defer logger.Sync()
logger.Info("resp data", zap.Any("data", data))
if data != nil {
for _, d := range data {
chartData = append(chartData, models.SeriesData{
Value: d.Jumlah,
Name: d.M_PatientGender + ": " + strconv.Itoa(d.Jumlah) + " Peserta",
})
}
} else {
chartData = append(chartData, models.SeriesData{Value: 0, Name: "No Data"})
}
option, err := tkp.GetPieChartConf(title, subtext, chartData)
if err != nil {
return option, fmt.Errorf("error get piechart total gender: %v", err)
}
return option, nil
}
func (tkp *TabKepersertaanServices) GetKepesertaanByUmur(mcuID string) (models.Piechart, error) {
logger, _ := zap.NewProduction()
var option models.Piechart
var data []models.UmurPesertaModel
title := "Peserta MCU"
subtext := "Berdasarkan umur"
chartData := []models.SeriesData{}
q := `
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 ""
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'
LEFT JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID AND M_PatientIsActive = 'Y'
WHERE Mcu_OrderMgm_McuID = ?
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 ""
END
ORDER BY umur
`
if err := dbx.Handlex.Select(&data, q, mcuID); err != nil {
return option, fmt.Errorf("error get data jumlah umur: %v", err)
}
defer logger.Sync()
logger.Info("response data", zap.Any("data", data))
if data != nil {
for _, d := range data {
chartData = append(chartData, models.SeriesData{
Value: d.Total,
Name: d.Umur + ": " + strconv.Itoa(d.Total) + " Peserta",
})
}
} else {
chartData = append(chartData, models.SeriesData{Value: 0, Name: "No Data"})
}
option, err := tkp.GetPieChartConf(title, subtext, chartData)
if err != nil {
return option, fmt.Errorf("error get piechart jumlah umur: %v", err)
}
return option, nil
}

View File

@@ -1,232 +0,0 @@
package mcu_corporate_services
import (
"cpone/db"
"cpone/models"
dbx "cpone/package/database"
"fmt"
"go.uber.org/zap"
)
type TabKesimpulanServices struct {
TabKesimpulanStore db.AppStore
}
func NewTabKesimpulanServices(uStore db.AppStore) *TabKesimpulanServices {
return &TabKesimpulanServices{
TabKesimpulanStore: uStore,
}
}
func (tks *TabKesimpulanServices) GetListKesimpulanLab(id string) ([]models.ModelKesimpulanLab, error) {
logger, _ := zap.NewProduction()
var listLab []models.ModelKesimpulanLab
var dataTot []models.ModelKesimpulanLab
qryTot := `select '' as nomor,
'' as Test, sum(total) as total
from(
select count(*) 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
left join nat_test on Nat_TestCode = Mgm_HeaderNat_TestCode
where Mgm_HeaderIsActive = 'Y' and Mgm_HeaderMgm_McuID = ? AND Mgm_HeaderType = 'L'
and Mgm_HeaderIsNormal = 'N'
group by Mgm_DetailMcu_KelainanID, Mgm_HeaderType ) x`
err := dbx.Handlex.Select(&dataTot, qryTot, id)
if err != nil {
defer logger.Sync()
logger.Error("Error get total",
zap.Any("id", id),
zap.Any("total data", dataTot),
)
// return dataTot, fmt.Errorf("QUERY_FAILED")
}
// Extracting the Total value
var totalLab string
if len(dataTot) > 0 {
totalLab = dataTot[0].Total
}
logger.Info("data",
zap.Any("id", id),
zap.Any("cek total", totalLab),
)
query := `SELECT ROW_NUMBER() OVER (ORDER BY count(Mgm_HeaderT_OrderHeaderID) DESC) AS nomor,
ifnull(Nat_TestName ,Mcu_KelainanGroupName) as Test,
cast(count(Mgm_HeaderT_OrderHeaderID)/?*100 as decimal(2,0)) 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
left join nat_test on Nat_TestCode = Mgm_HeaderNat_TestCode
where Mgm_HeaderIsActive = 'Y' and Mgm_HeaderMgm_McuID = ? AND Mgm_HeaderType = 'L'
and Mgm_HeaderIsNormal = 'N'
group by Mgm_DetailMcu_KelainanID, Mgm_HeaderType ORDER BY count(Mgm_HeaderT_OrderHeaderID) DESC
LIMIT 3`
err = dbx.Handlex.Select(&listLab, query, totalLab, id)
if err != nil {
defer logger.Sync()
logger.Error("Error get data lab",
zap.Any("id", id),
zap.Any("list data", listLab),
)
return listLab, fmt.Errorf("QUERY_FAILED")
}
logger.Info("data",
zap.Any("id", id),
zap.Any("cekkkk", listLab),
)
return listLab, nil
}
func (tks *TabKesimpulanServices) GetListKesimpulanNonLab(id string) ([]models.ModelKesimpulanLab, error) {
logger, _ := zap.NewProduction()
var listNonLab []models.ModelKesimpulanLab
var dataTot []models.ModelKesimpulanLab
qryTot := `select '' as nomor,
'' as Test, sum(total) as total
from(
select count(*) 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
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 Mgm_DetailMcu_KelainanID, Mgm_HeaderType ) x`
err := dbx.Handlex.Select(&dataTot, qryTot, id)
if err != nil {
defer logger.Sync()
logger.Error("Error get total",
zap.Any("id", id),
zap.Any("total data", dataTot),
)
// return dataTot, fmt.Errorf("QUERY_FAILED")
}
// Extracting the Total value
var totalLab string
if len(dataTot) > 0 {
totalLab = dataTot[0].Total
}
logger.Info("data",
zap.Any("id", id),
zap.Any("cek total", totalLab),
)
query := `SELECT ROW_NUMBER() OVER (ORDER BY count(Mgm_HeaderT_OrderHeaderID) DESC) AS nomor,
ifnull(Nat_TestName ,Mcu_KelainanGroupName) as Test,
cast(count(Mgm_HeaderT_OrderHeaderID)/?*100 as decimal(2,0)) 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
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 Mgm_DetailMcu_KelainanID, Mgm_HeaderType ORDER BY count(Mgm_HeaderT_OrderHeaderID) DESC
LIMIT 3`
err = dbx.Handlex.Select(&listNonLab, query, totalLab, id)
if err != nil {
defer logger.Sync()
logger.Error("Error get data NON lab",
zap.Any("id", id),
zap.Any("list data", listNonLab),
)
return listNonLab, fmt.Errorf("QUERY_FAILED")
}
logger.Info("data",
zap.Any("id", id),
zap.Any("cekkkk", listNonLab),
)
return listNonLab, nil
}
func (tks *TabKesimpulanServices) GetListKesimpulanFisik(id string) ([]models.ModelKesimpulanLab, error) {
logger, _ := zap.NewProduction()
var listFisik []models.ModelKesimpulanLab
var dataTot []models.ModelKesimpulanLab
qryTot := `select '' as nomor,
'' as Test, sum(total) as total
from(
select count(*) 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
left join nat_test on Nat_TestCode = Mgm_HeaderNat_TestCode
where Mgm_HeaderIsActive = 'Y' and Mgm_HeaderMgm_McuID = ? AND Mgm_HeaderType = 'F'
and Mgm_HeaderIsNormal = 'N'
group by Mgm_DetailMcu_KelainanID, Mgm_HeaderType ) x`
err := dbx.Handlex.Select(&dataTot, qryTot, id)
if err != nil {
defer logger.Sync()
logger.Error("Error get total",
zap.Any("id", id),
zap.Any("total data", dataTot),
)
// return dataTot, fmt.Errorf("QUERY_FAILED")
}
// Extracting the Total value
var totalFisik string
if len(dataTot) > 0 {
totalFisik = dataTot[0].Total
}
logger.Info("data",
zap.Any("id", id),
zap.Any("cek total", totalFisik),
)
query := `SELECT ROW_NUMBER() OVER (ORDER BY count(Mgm_HeaderT_OrderHeaderID) DESC) AS nomor,
ifnull(Nat_TestName ,Mcu_KelainanGroupName) as Test,
cast(count(Mgm_HeaderT_OrderHeaderID)/?*100 as decimal(2,0)) 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
left join nat_test on Nat_TestCode = Mgm_HeaderNat_TestCode
where Mgm_HeaderIsActive = 'Y' and Mgm_HeaderMgm_McuID = ? AND Mgm_HeaderType = 'F'
and Mgm_HeaderIsNormal = 'N'
group by Mgm_DetailMcu_KelainanID, Mgm_HeaderType ORDER BY count(Mgm_HeaderT_OrderHeaderID) DESC
LIMIT 3`
err = dbx.Handlex.Select(&listFisik, query, totalFisik, id)
if err != nil {
defer logger.Sync()
logger.Error("Error get data fisik",
zap.Any("id", id),
zap.Any("list data", listFisik),
)
return listFisik, fmt.Errorf("QUERY_FAILED")
}
return listFisik, nil
}

View File

@@ -1,198 +0,0 @@
package mcu_corporate_services
import (
"cpone/db"
"cpone/models"
dbx "cpone/package/database"
"fmt"
"math"
"go.uber.org/zap"
)
type TabKeuanganServices struct {
TabKeuanganStore db.AppStore
}
func NewTabKeuanganServices(uStore db.AppStore) *TabKeuanganServices {
return &TabKeuanganServices{
TabKeuanganStore: uStore,
}
}
func (tks *TabKeuanganServices) GetTotalOrderKeuangan(mcuID string) (int, error) {
logger, _ := zap.NewProduction()
var mcu models.DashboardPic
ret := 0
var data []models.TotalOrderHeader
q := `
SELECT
Mgm_McuID,
Mgm_McuLabel,
Mgm_McuCorporateID,
Mgm_McuIsActive
FROM mgm_mcu
WHERE Mgm_McuIsActive = 'Y'
AND Mgm_McuID = ?
`
if err := dbx.Handlex.Get(&mcu, q, mcuID); err != nil {
defer logger.Sync()
logger.Info("error get corportate id", zap.Any("mcuID", mcuID))
return ret, fmt.Errorf("error get corporate id: %v", err)
}
q = `
SELECT
T_OrderHeaderID,
T_OrderHeaderCorporateID,
T_OrderHeaderTotal,
T_OrderHeaderCreated
FROM t_orderheader
WHERE T_OrderHeaderIsActive = 'Y'
AND T_OrderHeaderCorporateID = ?
`
if err := dbx.Handlex.Select(&data, q, mcu.Mgm_McuCorporateID); err != nil {
defer logger.Sync()
logger.Info("error get orderheader data by corp id", zap.Any("corpID", mcu.Mgm_McuCorporateID))
return ret, fmt.Errorf("error get orderheader data by corp id: %v", err)
}
for _, d := range data {
ret = ret + int(d.T_OrderHeaderTotal)
}
return ret, nil
}
func (tks *TabKeuanganServices) GetTotalCardData(mcuID string) (models.TotalBillCard, error) {
logger, _ := zap.NewProduction()
var ret models.TotalBillCard
var mcu models.DashboardPic
var uang []models.KeuanganModel
q := `
SELECT
Mgm_McuID,
Mgm_McuLabel,
Mgm_McuCorporateID,
Mgm_McuIsActive
FROM mgm_mcu
WHERE Mgm_McuIsActive = 'Y'
AND Mgm_McuID = ?
`
if err := dbx.Handlex.Get(&mcu, q, mcuID); err != nil {
defer logger.Sync()
logger.Info("error get corportate id", zap.Any("mcuID", mcuID))
return ret, fmt.Errorf("error get corporate id: %v", err)
}
q = `
SELECT
fb.F_BillID,
fb.F_BillNo,
fb.F_BillCorporateID,
DATE_FORMAT(fb.F_BillDueDate, '%e %M %Y') AS F_BillDueDate,
fb.F_BillTotal,
fb.F_BillUnpaid,
DATE_FORMAT(fb.F_BillCreated, '%e %M %Y') AS F_BillCreated
FROM f_bill fb
WHERE fb.F_BillIsActive = 'Y'
AND fb.F_BillCorporateID = ?
`
if err := dbx.Handlex.Select(&uang, q, mcu.Mgm_McuCorporateID); err != nil {
defer logger.Sync()
logger.Error("Error Get List Bill Data", zap.Any("corpID", mcu.Mgm_McuCorporateID))
return ret, fmt.Errorf("error query database: %v", err)
}
for _, bill := range uang {
ret.TotalTagihan = ret.TotalTagihan + bill.F_BillTotal
ret.TotalHutang = ret.TotalHutang + bill.F_BillUnpaid
}
ret.TotalPelunasan = ret.TotalTagihan - ret.TotalHutang
return ret, nil
}
func (tks *TabKeuanganServices) GetListingDataKeuangan(mcuID string, currentpage int, rowperpage int) ([]models.KeuanganModel, int, error) {
logger, _ := zap.NewProduction()
var ret []models.KeuanganModel
var totalData int
var mcu models.DashboardPic
q := `
SELECT
Mgm_McuID,
Mgm_McuLabel,
Mgm_McuCorporateID,
Mgm_McuIsActive
FROM mgm_mcu
WHERE Mgm_McuIsActive = 'Y'
AND Mgm_McuID = ?
`
if err := dbx.Handlex.Get(&mcu, q, mcuID); err != nil {
defer logger.Sync()
logger.Info("error get corportate id", zap.Any("mcuID", mcuID))
return ret, 0, fmt.Errorf("error get corporate id: %v", err)
}
offset := (currentpage - 1) * rowperpage
querytotal := `
SELECT COUNT(*)
FROM f_bill
WHERE F_BillIsActive = 'Y' AND F_BillCorporateID = ?
`
if err := dbx.Handlex.Get(&totalData, querytotal, mcu.Mgm_McuCorporateID); err != nil {
return nil, 0, fmt.Errorf("error query get total data: %v", err)
}
q = `
SELECT
fb.F_BillID,
fb.F_BillNo,
fb.F_BillCorporateID,
DATE_FORMAT(fb.F_BillDueDate, '%e %M %Y') AS F_BillDueDate,
fb.F_BillTotal,
fb.F_BillUnpaid,
DATE_FORMAT(fb.F_BillCreated, '%e %M %Y') AS F_BillCreated
FROM f_bill fb
WHERE fb.F_BillIsActive = 'Y'
AND fb.F_BillCorporateID = ?
LIMIT ? OFFSET ?
`
if err := dbx.Handlex.Select(&ret, q, mcu.Mgm_McuCorporateID, rowperpage, offset); err != nil {
defer logger.Sync()
logger.Error("Error Get List Bill Data", zap.Any("corpID", mcu.Mgm_McuCorporateID))
return ret, 0, fmt.Errorf("error query database: %v", err)
}
for idx, data := range ret {
var paym []models.BillPaymentModel
q := `
SELECT
F_BillPaymentID,
F_BillPaymentF_BillID,
DATE_FORMAT(F_BillPaymentDate, '%e %M %Y') AS F_BillPaymentDate,
F_BillPaymentNumber,
F_BillPaymentAmount
FROM f_bill_payment
WHERE F_BillPaymentIsActive = 'Y'
AND F_BillPaymentF_BillID = ?
`
if err := dbx.Handlex.Select(&paym, q, data.F_BillID); err != nil {
defer logger.Sync()
logger.Error("Error Get List Payment Data", zap.Any("billID", data.F_BillID))
return ret, 0, fmt.Errorf("error query database: %v", err)
}
ret[idx].BillPayment = append(ret[idx].BillPayment, paym...)
ret[idx].TotalBillPayment = data.F_BillTotal - data.F_BillUnpaid
}
totalPage := int(math.Ceil(float64(totalData) / float64(rowperpage)))
return ret, totalPage, nil
}

View File

@@ -1,221 +1,15 @@
package corporate_services
import (
"cpone/db"
"cpone/models"
dbx "cpone/package/database"
"fmt"
"math"
"strconv"
import "cpone/db"
"go.uber.org/zap"
)
type PatientServices struct {
type ServicesPatient struct {
PatientStore db.AppStore
}
func NewPatientServices(uStore db.AppStore) *PatientServices {
func NewServicesPatient(uStore db.AppStore) *ServicesPatient {
return &PatientServices{
return &ServicesPatient{
PatientStore: uStore,
}
}
func (sp *PatientServices) GetPatientData(email string) (string, error) {
var ret string
prmEmail := "%" + email + "%"
q := `
SELECT
M_PatientName
FROM m_patient
WHERE M_PatientEmail LIKE ?
AND M_PatientIsActive = 'Y'
`
if err := dbx.Handlex.Get(&ret, q, prmEmail); err != nil {
return ret, err
}
return ret, nil
}
func (sp *PatientServices) GetDashboardPatientBreadcrumb(title string) (models.BreadCrumbV1, error) {
breadcrumb := models.BreadCrumbV1{
Title: title,
Item: []models.ItemBreadCrumbV1{
{
Item: "Dashboard",
Url: "/corp/dashboard_pat",
},
{
Item: "PT. ABC",
Url: "",
},
{
Item: title,
Url: "",
},
},
}
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
var totalData int
prmEmail := "%" + email + "%"
offset := (currentpage - 1) * rowperpage
q := `
SELECT COUNT(*)
FROM m_patient mp
JOIN t_orderheader toh ON toh.T_OrderHeaderM_PatientID = mp.M_PatientID AND toh.T_OrderHeaderIsActive = 'Y'
WHERE mp.M_PatientEmail LIKE ?
AND mp.M_PatientIsActive = 'Y'
`
if err := dbx.Handlex.Get(&totalData, q, prmEmail); err != nil {
return nil, 0, fmt.Errorf("error query get total data: %v", err)
}
q = `
SELECT
toh.T_OrderHeaderID,
toh.T_OrderHeaderDate,
toh.T_OrderHeaderLabNumber,
toh.T_OrderHeaderM_PatientID,
toh.T_OrderHeaderCorporateID,
toh.T_OrderHeaderMgm_McuID,
toh.T_OrderHeaderIsActive
FROM m_patient mp
JOIN t_orderheader toh ON toh.T_OrderHeaderM_PatientID = mp.M_PatientID AND toh.T_OrderHeaderIsActive = 'Y'
WHERE mp.M_PatientEmail LIKE ?
AND mp.M_PatientIsActive = 'Y'
LIMIT ? OFFSET ?
`
if err := dbx.Handlex.Select(&ret, q, prmEmail, rowperpage, offset); err != nil {
return nil, 0, fmt.Errorf("error query get list 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) GetReportMcu(orderheaderID string) ([]models.TabViewReportMcu, error) {
var ret []models.TabViewReportMcu
var data []models.ModelMcuPesertaReport
var totalData int
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 = `
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
`
if err := dbx.Handlex.Select(&data, q, 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)
}
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
}

View File

@@ -1,37 +0,0 @@
package dev_services
import (
"cpone/db"
"cpone/models"
)
type DetailMcuServices struct {
DetailMcuStore db.AppStore
}
func NewDetailMcuServices(uStore db.AppStore) *DetailMcuServices {
return &DetailMcuServices{
DetailMcuStore: uStore,
}
}
func (dmcu *DetailMcuServices) GetBreadcrumb(title string) (models.BreadCrumbV1, error) {
breadcrumb := models.BreadCrumbV1{
Title: title,
Item: []models.ItemBreadCrumbV1{
{
Item: "Dashboard",
Url: "/dev/dashboard",
},
{
Item: "Employee Health Medical Analytic",
Url: "/dev/employeeanalytic/",
},
{
Item: title,
Url: "",
},
},
}
return breadcrumb, nil
}

View File

@@ -1,128 +0,0 @@
package dev_services
import (
"cpone/db"
"cpone/models"
dbx "cpone/package/database"
"fmt"
"math"
"go.uber.org/zap"
)
type EmployeeAnalyticServices struct {
EmployeeAnalyticStore db.AppStore
}
func NewEmployeeAnalyticServices(uStore db.AppStore) *EmployeeAnalyticServices {
return &EmployeeAnalyticServices{
EmployeeAnalyticStore: uStore,
}
}
func (ea *EmployeeAnalyticServices) GetEmployeeAnalyticBreadcrumb(title string) (models.BreadCrumbV1, error) {
breadcrumb := models.BreadCrumbV1{
Title: title,
Item: []models.ItemBreadCrumbV1{
{
Item: "Dashboard",
Url: "/dev/dashboard",
},
{
Item: "Employee Health Medical Analytic",
Url: "",
},
},
}
return breadcrumb, nil
}
func (ea *EmployeeAnalyticServices) DummyDataTest() ([]models.DashboardPic, error) {
employees := []models.DashboardPic{
{
Mgm_McuID: 1,
Mgm_McuLabel: "Employee 1",
Mgm_McuFlagRelasiBayarSendiri: "Yes",
Mgm_McuBisaTambahPemeriksaan: "No",
Mgm_McuCorporateID: 101,
Mgm_McuNumber: "EMP001",
Mgm_McuNumberNational: "NAT001",
Mgm_McuNote: "Lorem ipsum dolor sit amet.",
Mgm_McuStartDate: "2024-01-01",
Mgm_McuEndDate: "2024-12-31",
Mgm_McuIsActive: "Y",
},
{
Mgm_McuID: 2,
Mgm_McuLabel: "Employee 2",
Mgm_McuFlagRelasiBayarSendiri: "No",
Mgm_McuBisaTambahPemeriksaan: "Yes",
Mgm_McuCorporateID: 102,
Mgm_McuNumber: "EMP002",
Mgm_McuNumberNational: "NAT002",
Mgm_McuNote: "Lorem ipsum dolor sit amet consectetur.",
Mgm_McuStartDate: "2024-02-15",
Mgm_McuEndDate: "2024-11-30",
Mgm_McuIsActive: "Y",
},
}
return employees, nil
}
func (ea *EmployeeAnalyticServices) ListingEmployeeAnalytic(search string, startdate string, enddate string, currentpage int, rowperpage int) ([]models.DashboardPic, int, error) {
logger, _ := zap.NewProduction()
var ret []models.DashboardPic
var totalData int
if len(startdate) == 0 {
startdate = "1900-01-01"
}
if len(enddate) == 0 {
enddate = "9999-12-12"
}
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)
}
q = `
SELECT
Mgm_McuID,
Mgm_McuLabel,
Mgm_McuFlagRelasiBayarSendiri,
Mgm_McuBisaTambahPemeriksaan,
Mgm_McuCorporateID,
Mgm_McuNumber,
Mgm_McuNumberNational,
Mgm_McuNote,
DATE_FORMAT(Mgm_McuStartDate, '%d-%m-%Y') AS Mgm_McuStartDate,
DATE_FORMAT(Mgm_McuEndDate, '%d-%m-%Y') AS Mgm_McuEndDate,
Mgm_McuIsActive
FROM mgm_mcu
WHERE 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 {
return nil, 0, fmt.Errorf("error query get data: %v", err)
}
logger.Info("Resp", zap.Any("Respsone", ret))
totalPage := int(math.Ceil(float64(totalData) / float64(rowperpage)))
return ret, totalPage, nil
}

View File

@@ -1,232 +0,0 @@
package dev_services
import (
"cpone/db"
"cpone/models"
dbx "cpone/package/database"
"fmt"
"go.uber.org/zap"
)
func NewServicesKesimpulan(uStore db.AppStore) *KesimpulanServices {
return &KesimpulanServices{
KesimpulanStore: uStore,
}
}
type KesimpulanServices struct {
KesimpulanStore db.AppStore
}
func (k *KesimpulanServices) GetListKesimpulanLab(id string) ([]models.ModelKesimpulanLab, error) {
logger, _ := zap.NewProduction()
var listLab []models.ModelKesimpulanLab
var dataTot []models.ModelKesimpulanLab
qryTot := `select '' as nomor,
'' as Test, sum(total) as total
from(
select count(*) 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
left join nat_test on Nat_TestCode = Mgm_HeaderNat_TestCode
where Mgm_HeaderIsActive = 'Y' and Mgm_HeaderMgm_McuID = ? AND Mgm_HeaderType = 'L'
and Mgm_HeaderIsNormal = 'N'
group by Mgm_DetailMcu_KelainanID, Mgm_HeaderType ) x`
err := dbx.Handlex.Select(&dataTot, qryTot, id)
if err != nil {
defer logger.Sync()
logger.Error("Error get total",
zap.Any("id", id),
zap.Any("total data", dataTot),
)
// return dataTot, fmt.Errorf("QUERY_FAILED")
}
// Extracting the Total value
var totalLab string
if len(dataTot) > 0 {
totalLab = dataTot[0].Total
}
logger.Info("data",
zap.Any("id", id),
zap.Any("cek total", totalLab),
)
query := `SELECT ROW_NUMBER() OVER (ORDER BY count(Mgm_HeaderT_OrderHeaderID) DESC) AS nomor,
ifnull(Nat_TestName ,Mcu_KelainanGroupName) as Test,
cast(count(Mgm_HeaderT_OrderHeaderID)/?*100 as decimal(2,0)) 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
left join nat_test on Nat_TestCode = Mgm_HeaderNat_TestCode
where Mgm_HeaderIsActive = 'Y' and Mgm_HeaderMgm_McuID = ? AND Mgm_HeaderType = 'L'
and Mgm_HeaderIsNormal = 'N'
group by Mgm_DetailMcu_KelainanID, Mgm_HeaderType ORDER BY count(Mgm_HeaderT_OrderHeaderID) DESC
LIMIT 3`
err = dbx.Handlex.Select(&listLab, query, totalLab, id)
if err != nil {
defer logger.Sync()
logger.Error("Error get data lab",
zap.Any("id", id),
zap.Any("list data", listLab),
)
return listLab, fmt.Errorf("QUERY_FAILED")
}
logger.Info("data",
zap.Any("id", id),
zap.Any("cekkkk", listLab),
)
return listLab, nil
}
func (k *KesimpulanServices) GetListKesimpulanNonLab(id string) ([]models.ModelKesimpulanLab, error) {
logger, _ := zap.NewProduction()
var listNonLab []models.ModelKesimpulanLab
var dataTot []models.ModelKesimpulanLab
qryTot := `select '' as nomor,
'' as Test, sum(total) as total
from(
select count(*) 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
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 Mgm_DetailMcu_KelainanID, Mgm_HeaderType ) x`
err := dbx.Handlex.Select(&dataTot, qryTot, id)
if err != nil {
defer logger.Sync()
logger.Error("Error get total",
zap.Any("id", id),
zap.Any("total data", dataTot),
)
// return dataTot, fmt.Errorf("QUERY_FAILED")
}
// Extracting the Total value
var totalLab string
if len(dataTot) > 0 {
totalLab = dataTot[0].Total
}
logger.Info("data",
zap.Any("id", id),
zap.Any("cek total", totalLab),
)
query := `SELECT ROW_NUMBER() OVER (ORDER BY count(Mgm_HeaderT_OrderHeaderID) DESC) AS nomor,
ifnull(Nat_TestName ,Mcu_KelainanGroupName) as Test,
cast(count(Mgm_HeaderT_OrderHeaderID)/?*100 as decimal(2,0)) 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
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 Mgm_DetailMcu_KelainanID, Mgm_HeaderType ORDER BY count(Mgm_HeaderT_OrderHeaderID) DESC
LIMIT 3`
err = dbx.Handlex.Select(&listNonLab, query, totalLab, id)
if err != nil {
defer logger.Sync()
logger.Error("Error get data NON lab",
zap.Any("id", id),
zap.Any("list data", listNonLab),
)
return listNonLab, fmt.Errorf("QUERY_FAILED")
}
logger.Info("data",
zap.Any("id", id),
zap.Any("cekkkk", listNonLab),
)
return listNonLab, nil
}
func (k *KesimpulanServices) GetListKesimpulanFisik(id string) ([]models.ModelKesimpulanLab, error) {
logger, _ := zap.NewProduction()
var listFisik []models.ModelKesimpulanLab
var dataTot []models.ModelKesimpulanLab
qryTot := `select '' as nomor,
'' as Test, sum(total) as total
from(
select count(*) 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
left join nat_test on Nat_TestCode = Mgm_HeaderNat_TestCode
where Mgm_HeaderIsActive = 'Y' and Mgm_HeaderMgm_McuID = ? AND Mgm_HeaderType = 'F'
and Mgm_HeaderIsNormal = 'N'
group by Mgm_DetailMcu_KelainanID, Mgm_HeaderType ) x`
err := dbx.Handlex.Select(&dataTot, qryTot, id)
if err != nil {
defer logger.Sync()
logger.Error("Error get total",
zap.Any("id", id),
zap.Any("total data", dataTot),
)
// return dataTot, fmt.Errorf("QUERY_FAILED")
}
// Extracting the Total value
var totalFisik string
if len(dataTot) > 0 {
totalFisik = dataTot[0].Total
}
logger.Info("data",
zap.Any("id", id),
zap.Any("cek total", totalFisik),
)
query := `SELECT ROW_NUMBER() OVER (ORDER BY count(Mgm_HeaderT_OrderHeaderID) DESC) AS nomor,
ifnull(Nat_TestName ,Mcu_KelainanGroupName) as Test,
cast(count(Mgm_HeaderT_OrderHeaderID)/?*100 as decimal(2,0)) 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
left join nat_test on Nat_TestCode = Mgm_HeaderNat_TestCode
where Mgm_HeaderIsActive = 'Y' and Mgm_HeaderMgm_McuID = ? AND Mgm_HeaderType = 'F'
and Mgm_HeaderIsNormal = 'N'
group by Mgm_DetailMcu_KelainanID, Mgm_HeaderType ORDER BY count(Mgm_HeaderT_OrderHeaderID) DESC
LIMIT 3`
err = dbx.Handlex.Select(&listFisik, query, totalFisik, id)
if err != nil {
defer logger.Sync()
logger.Error("Error get data fisik",
zap.Any("id", id),
zap.Any("list data", listFisik),
)
return listFisik, fmt.Errorf("QUERY_FAILED")
}
return listFisik, nil
}

View File

@@ -1,74 +0,0 @@
package dev_services
import (
"cpone/db"
"cpone/models"
dbx "cpone/package/database"
"fmt"
"math"
"go.uber.org/zap"
)
type McuDaftarPesertaServices struct {
McuDaftarPesertaStore db.AppStore
}
func NewMcuDaftarPesertaServices(uStore db.AppStore) *McuDaftarPesertaServices {
return &McuDaftarPesertaServices{
McuDaftarPesertaStore: uStore,
}
}
func (mdp *McuDaftarPesertaServices) GetListMcuDaftarPeserta(id string, currentPage int, rowPerPage int) ([]models.ModelMcuDaftarPeserta, int, error) {
logger, _ := zap.NewProduction()
var listDaftarPeserta []models.ModelMcuDaftarPeserta
var totalData int
offset := (currentPage - 1) * rowPerPage
querytotal := `SELECT COUNT(*)
FROM t_orderheader
JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID
AND M_PatientIsActive = 'Y'
WHERE T_OrderHeaderIsActive = 'Y' AND T_OrderHeaderMgm_McuID = ?`
if err := dbx.Handlex.Get(&totalData, querytotal, id); err != nil {
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 = ?
ORDER BY M_PatientName ASC
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
}

View File

@@ -0,0 +1,616 @@
package dev_services
import (
"cpone/db"
"cpone/models"
dbx "cpone/package/database"
"cpone/services"
"cpone/utils"
"fmt"
"io"
"math"
"os"
"path/filepath"
"runtime"
"strings"
"go.uber.org/zap"
)
func NewMdPasienServices(uStore db.AppStore) *MdPasienServices {
return &MdPasienServices{
MdPasienStore: uStore,
}
}
type MdPasienServices struct {
MdPasienStore db.AppStore
}
func (su *MdPasienServices) GetListMdPasien(
search string,
currentPage int,
rowPerPage int) ([]models.Pasien, int, error) {
var pasienList []models.Pasien
var totalData int
offset := (currentPage - 1) * rowPerPage
prm := "%" + strings.TrimSpace(search) + "%"
querytotal := `
SELECT COUNT(*)
FROM m_patient
JOIN m_title
ON M_PatientM_TitleID = M_TitleID
AND M_TitleIsActive = 'Y'
WHERE
(M_PatientNoReg LIKE ? OR M_PatientName LIKE ?)
AND M_PatientIsActive = 'Y'
`
if err := dbx.Handlex.Get(&totalData, querytotal, prm, prm); err != nil {
return nil, 0, fmt.Errorf("error querying database: %v", err)
}
query := `
SELECT m_patient.*,
CASE
WHEN M_PatientGender = "MALE" THEN "Laki-laki"
WHEN M_PatientGender = "FEMALE" THEN "Perempuan"
ELSE ""
END AS M_PatientGender
FROM m_patient
JOIN m_title
ON M_PatientM_TitleID = M_TitleID
AND M_TitleIsActive = 'Y'
WHERE
(M_PatientNoReg LIKE ? OR M_PatientName LIKE ?)
AND M_PatientIsActive = 'Y'
LIMIT ? OFFSET ?
`
if err := dbx.Handlex.Select(&pasienList, query, prm, prm, rowPerPage, offset); err != nil {
return nil, 0, fmt.Errorf("error querying database: %v", err)
}
totalPage := int(math.Ceil(float64(totalData) / float64(rowPerPage)))
return pasienList, totalPage, nil
}
func (su *MdPasienServices) GetMdPasienBreadCrumb(title string) (models.BreadCrumbV1, error) {
ret := models.BreadCrumbV1{
Title: "Master Pasien",
Item: []models.ItemBreadCrumbV1{
{
Item: "Dashboard",
Url: "/dev/dashboard",
},
{
Item: "Master",
Url: "/dev/master",
},
{
Item: "Pasien",
Url: "",
},
},
}
return ret, nil
}
func (su *MdPasienServices) GetPasienTitle() ([]models.SapaanPasien, error) {
var sapaanList []models.SapaanPasien
query := `
SELECT * FROM m_title WHERE M_TitleIsActive = 'Y'
`
if err := dbx.Handlex.Select(&sapaanList, query); err != nil {
return nil, fmt.Errorf("error querying database: %v", err)
}
return sapaanList, nil
}
func (su *MdPasienServices) Addpasien(prm models.PasienFormServicesPrm) (string, error) {
logger, _ := zap.NewProduction()
tx := dbx.Handlex.MustBegin()
var numbering string
var newFileName string
if prm.Foto != nil {
_, b, _, _ := runtime.Caller(0)
basepath := filepath.Dir(b)
println("Basepath")
println(basepath)
// defer logger.Sync()
// logger.Info("FIlE",
// zap.Any("filename", file.Filename),
// )
src, err := prm.Foto.Open()
if err != nil {
return "", fmt.Errorf("error open file")
}
defer src.Close()
ext := filepath.Ext(prm.Foto.Filename)
newFileName = utils.GenerateRandomID(prm.Foto.Filename) + ext
uploadDir := filepath.Join(basepath, "..", "..", "uploads", "patient")
println(uploadDir)
// Menentukan path file tujuan
dstPath := filepath.Join(uploadDir, newFileName)
// Membuat direktori jika belum ada
if err := os.MkdirAll(uploadDir, os.ModePerm); err != nil {
return "", fmt.Errorf("error mkdir")
}
// Membuka file tujuan
dst, err := os.Create(dstPath)
if err != nil {
return "", fmt.Errorf("error create file")
}
defer dst.Close()
// Menyalin konten file yang diupload ke file tujuan
if _, err = io.Copy(dst, src); err != nil {
return "", fmt.Errorf("error copy file")
}
}
qryNum :=
`SELECT fn_numbering("P") AS numbering`
if err := tx.Get(&numbering, qryNum); err != nil {
tx.Rollback()
defer logger.Sync()
logger.Error("Error get numbering",
zap.Any("error", err),
)
return "", fmt.Errorf("error querying database: %v", err)
}
gender := strings.Trim(prm.Gender, "@")
bloodType := []string{}
if prm.Goldar == "" {
bloodType = append(bloodType, "")
bloodType = append(bloodType, "")
} else {
bloodType = strings.Split(prm.Goldar, "@")
if prm.Goldar != "" && len(bloodType) != 2 {
tx.Rollback()
defer logger.Sync()
logger.Error("Error split bloodtype",
zap.Any("blood Type", bloodType),
)
return "", fmt.Errorf("error bloodtype")
}
}
rhesus := []string{}
if prm.Rhesus == "" {
rhesus = append(rhesus, "")
rhesus = append(rhesus, "")
} else {
rhesus = strings.Split(prm.Rhesus, "@")
if prm.Rhesus != "" && len(rhesus) != 2 {
tx.Rollback()
defer logger.Sync()
logger.Error("Error split rhesus",
zap.Any("blood Type", rhesus),
)
return "", fmt.Errorf("error rhesus")
}
}
education := []string{}
if prm.Pendidikan == "" {
education = append(education, "")
education = append(education, "")
} else {
education = strings.Split(prm.Pendidikan, "@")
if prm.Pendidikan != "" && len(education) != 2 {
tx.Rollback()
defer logger.Sync()
logger.Error("Error split education",
zap.Any("blood Type", education),
)
return "", fmt.Errorf("error education")
}
}
etnis := []string{}
if prm.Etnis == "" {
etnis = append(etnis, "")
etnis = append(etnis, "")
} else {
etnis = strings.Split(prm.Etnis, "@")
if prm.Etnis != "" && len(etnis) != 2 {
tx.Rollback()
defer logger.Sync()
logger.Error("Error split etnis",
zap.Any("blood Type", etnis),
)
return "", fmt.Errorf("error etnis")
}
}
identifier := strings.Split(prm.Identitas, "@")
if len(identifier) != 2 {
tx.Rollback()
defer logger.Sync()
logger.Error("Error split identifier",
zap.Any("blood Type", identifier),
)
return "", fmt.Errorf("error identifier")
}
query := `
INSERT INTO m_patient
(M_PatientNoReg,
M_PatientM_TitleID,
M_PatientPrefix,
M_PatientName,
M_PatientSuffix,
M_PatientGender,
M_PatientDOB,
M_PatientReligionCode,
M_PatientReligionSystem,
M_PatientBloodTypeCode,
M_PatientBloodTypeSystem,
M_PatientBloodRhCode,
M_PatientBloodRhSystem,
M_PatientEducationCode,
M_PatientEducationSystem,
M_PatientCitizenship,
M_PatientEtnicCode,
M_PatientEtnicSystem,
M_PatientIdentifierCode,
M_PatientIdentifierSystem,
M_PatientIdentifierValue,
M_PatientJob,
M_PatientPosisi,
M_PatientDivisi,
M_PatientHp,
M_PatientEmail,
M_PatientPhoto,
M_PatientAddress,
M_PatientAddressRegionalCd,
M_PatientAddressCity,
M_PatientAddressDistrict,
M_PatientAddressState,
M_PatientAddressCountry,
M_PatientCreatedUserID
)
VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
`
rst := tx.MustExec(query,
numbering,
prm.Sapaan,
prm.Imbuhanawal,
prm.Nama,
prm.Imbuhanakhir,
gender,
prm.Dob,
"",
"",
bloodType[0],
bloodType[1],
rhesus[0],
rhesus[1],
education[0],
education[1],
prm.Nationality,
etnis[0],
etnis[1],
identifier[0],
identifier[1],
prm.Nomoridentitas,
prm.Pekerjaan,
prm.Posisi,
prm.Departement,
prm.Hp,
prm.Email,
newFileName,
"",
"",
"",
"",
"",
"",
prm.UserID,
)
_, err := rst.LastInsertId()
if err != nil {
tx.Rollback()
defer logger.Sync()
logger.Error("Error insert db",
zap.Any("rows Affected", rst),
zap.Any("Error", err.Error()),
)
return "", fmt.Errorf("error querying database: %v", err)
}
tx.Commit()
return numbering, nil
}
func (su *MdPasienServices) GetPasienByID(id string) (*models.Pasien, error) {
logger, _ := zap.NewProduction()
var pasien models.Pasien
query := `SELECT * FROM m_patient WHERE M_PatientID = ?`
err := dbx.Handlex.Get(&pasien, query, id)
if err != nil {
defer logger.Sync()
logger.Error("Error get patient",
zap.Any("Error", err.Error()),
)
return nil, fmt.Errorf("error querying database: %v", err)
}
return &pasien, nil
}
func (su *MdPasienServices) GetPasienTermonology() (
sapaan []models.SapaanPasien,
gender []models.TerminologyV0,
goldar []models.TerminologyV0,
rh []models.TerminologyV0,
pendidikan []models.TerminologyV0,
etnis []models.TerminologyV0,
idType []models.TerminologyV0,
err error) {
logger, err := zap.NewProduction()
sapaanList, err := su.GetPasienTitle()
if err != nil {
defer logger.Sync()
logger.Info("ERRO GET SAPAAN LIST",
zap.Any("error", err),
)
return nil, nil, nil, nil, nil, nil, nil, fmt.Errorf("error get sapaan")
}
genderList := []models.TerminologyV0{{Code: "MALE", Display: "Laki Laki"}, {Code: "FEMALE", Display: "Perempuan"}}
goldarList, err := services.GetTerminologyList(models.TerminologyParamv0{AttributePath: "Person.blood.type", CodeSystem: "http://loinc.org"})
if err != nil {
defer logger.Sync()
logger.Info("ERRO GET GOLDAR LIST",
zap.Any("error", err),
)
return nil, nil, nil, nil, nil, nil, nil, fmt.Errorf("error get tipe golongan darah")
}
rhesusList, err := services.GetTerminologyList(models.TerminologyParamv0{AttributePath: "Person.blood.rhesus", CodeSystem: "http://snomed.info/sct"})
if err != nil {
defer logger.Sync()
logger.Info("ERRO GET RH LIST",
zap.Any("error", err),
)
return nil, nil, nil, nil, nil, nil, nil, fmt.Errorf("error get tipe rhesus")
}
pendidikanList, err := services.GetTerminologyList(models.TerminologyParamv0{AttributePath: "Person.education", CodeSystem: "xhis.code.education.level"})
if err != nil {
defer logger.Sync()
logger.Info("ERRO GET PENDIDIKAN LIST",
zap.Any("error", err),
)
return nil, nil, nil, nil, nil, nil, nil, fmt.Errorf("error get pendidikan")
}
etnisList, err := services.GetTerminologyList(models.TerminologyParamv0{AttributePath: "Person.etnicity", CodeSystem: "xhis.code.etnicity"})
if err != nil {
defer logger.Sync()
logger.Info("ERRO GET ETNIS LIST",
zap.Any("error", err),
)
return nil, nil, nil, nil, nil, nil, nil, fmt.Errorf("error get sapaan")
}
idTypeList, err := services.GetTerminologyList(models.TerminologyParamv0{AttributePath: "Person.identifier.type", CodeSystem: "http://terminology.hl7.org/CodeSystem/v2-0203"})
if err != nil {
defer logger.Sync()
logger.Info("ERRO GET ID TYPE LIST",
zap.Any("error", err),
)
return nil, nil, nil, nil, nil, nil, nil, fmt.Errorf("error get tipe identitas")
}
return sapaanList,
genderList,
goldarList,
rhesusList,
pendidikanList,
etnisList,
idTypeList,
nil
}
func (su *MdPasienServices) EditPasien(prm models.PasienFormServicesPrm) (string, error) {
logger, _ := zap.NewProduction()
tx := dbx.Handlex.MustBegin()
var newFileName string
if prm.Foto != nil {
_, b, _, _ := runtime.Caller(0)
basepath := filepath.Dir(b)
println("Basepath")
println(basepath)
// defer logger.Sync()
// logger.Info("FIlE",
// zap.Any("filename", file.Filename),
// )
src, err := prm.Foto.Open()
if err != nil {
return "", fmt.Errorf("error open file")
}
defer src.Close()
ext := filepath.Ext(prm.Foto.Filename)
newFileName = utils.GenerateRandomID(prm.Foto.Filename) + ext
uploadDir := filepath.Join(basepath, "..", "..", "uploads", "patient")
println(uploadDir)
// Menentukan path file tujuan
dstPath := filepath.Join(uploadDir, newFileName)
// Membuat direktori jika belum ada
if err := os.MkdirAll(uploadDir, os.ModePerm); err != nil {
return "", fmt.Errorf("error mkdir")
}
// Membuka file tujuan
dst, err := os.Create(dstPath)
if err != nil {
return "", fmt.Errorf("error create file")
}
defer dst.Close()
// Menyalin konten file yang diupload ke file tujuan
if _, err = io.Copy(dst, src); err != nil {
return "", fmt.Errorf("error copy file")
}
}
updateFotoPath := ""
if newFileName != "" {
updateFotoPath = "M_PatientPhoto = '" + newFileName + "',"
}
gender := strings.Trim(prm.Gender, "@")
bloodType := []string{}
if prm.Goldar == "" {
bloodType = append(bloodType, "")
bloodType = append(bloodType, "")
} else {
bloodType = strings.Split(prm.Goldar, "@")
if prm.Goldar != "" && len(bloodType) != 2 {
tx.Rollback()
defer logger.Sync()
logger.Error("Error split bloodtype",
zap.Any("blood Type", bloodType),
)
return "", fmt.Errorf("error bloodtype")
}
}
rhesus := []string{}
if prm.Rhesus == "" {
rhesus = append(rhesus, "")
rhesus = append(rhesus, "")
} else {
rhesus = strings.Split(prm.Rhesus, "@")
if prm.Rhesus != "" && len(rhesus) != 2 {
tx.Rollback()
defer logger.Sync()
logger.Error("Error split rhesus",
zap.Any("blood Type", rhesus),
)
return "", fmt.Errorf("error rhesus")
}
}
education := []string{}
if prm.Pendidikan == "" {
education = append(education, "")
education = append(education, "")
} else {
education = strings.Split(prm.Pendidikan, "@")
if prm.Pendidikan != "" && len(education) != 2 {
tx.Rollback()
defer logger.Sync()
logger.Error("Error split education",
zap.Any("blood Type", education),
)
return "", fmt.Errorf("error education")
}
}
etnis := []string{}
if prm.Etnis == "" {
etnis = append(etnis, "")
etnis = append(etnis, "")
} else {
etnis = strings.Split(prm.Etnis, "@")
if prm.Etnis != "" && len(etnis) != 2 {
tx.Rollback()
defer logger.Sync()
logger.Error("Error split etnis",
zap.Any("blood Type", etnis),
)
return "", fmt.Errorf("error etnis")
}
}
identifier := strings.Split(prm.Identitas, "@")
if len(identifier) != 2 {
tx.Rollback()
defer logger.Sync()
logger.Error("Error split identifier",
zap.Any("blood Type", identifier),
)
return "", fmt.Errorf("error identifier")
}
query := `
UPDATE m_patient
SET
M_PatientM_TitleID = ?,
M_PatientPrefix = ?,
M_PatientName = ?,
M_PatientSuffix = ?,
M_PatientGender = ?,
M_PatientDOB = ?,
M_PatientReligionCode = ?,
M_PatientReligionSystem = ?,
M_PatientBloodTypeCode = ?,
M_PatientBloodTypeSystem = ?,
M_PatientBloodRhCode = ?,
M_PatientBloodRhSystem = ?,
M_PatientEducationCode = ?,
M_PatientEducationSystem = ?,
M_PatientCitizenship = ?,
M_PatientEtnicCode = ?,
M_PatientEtnicSystem = ?,
M_PatientIdentifierCode = ?,
M_PatientIdentifierSystem = ?,
M_PatientIdentifierValue = ?,
M_PatientJob = ?,
M_PatientPosisi = ?,
M_PatientDivisi = ?,
M_PatientHp = ?,
M_PatientEmail = ?,
` + updateFotoPath + `
M_PatientAddress = ?,
M_PatientAddressRegionalCd = ?,
M_PatientAddressCity = ?,
M_PatientAddressDistrict = ?,
M_PatientAddressState = ?,
M_PatientAddressCountry = ?,
M_PatientCreatedUserID = ?
WHERE M_PatientID = ?
`
rst := tx.MustExec(query,
prm.Sapaan,
prm.Imbuhanawal,
prm.Nama,
prm.Imbuhanakhir,
gender,
prm.Dob,
"",
"",
bloodType[0],
bloodType[1],
rhesus[0],
rhesus[1],
education[0],
education[1],
prm.Nationality,
etnis[0],
etnis[1],
identifier[0],
identifier[1],
prm.Nomoridentitas,
prm.Pekerjaan,
prm.Posisi,
prm.Departement,
prm.Hp,
prm.Email,
"",
"",
"",
"",
"",
"",
prm.UserID,
prm.PasienID,
)
_, err := rst.LastInsertId()
if err != nil {
tx.Rollback()
defer logger.Sync()
logger.Error("Error update db",
zap.Any("rows Affected", rst),
zap.Any("Error", err.Error()),
)
return "", fmt.Errorf("error querying database: %v", err)
}
tx.Commit()
return "", nil
}

View File

@@ -1,17 +1,6 @@
package public_services
import (
"bytes"
"cpone/db"
"cpone/models"
"encoding/json"
"fmt"
"io"
"net/http"
"net/url"
"go.uber.org/zap"
)
import "cpone/db"
type ServicesLogin struct {
CompanyStore db.AppStore
@@ -23,80 +12,3 @@ func NewServicesLogin(uStore db.AppStore) *ServicesLogin {
CompanyStore: uStore,
}
}
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) {
logger, _ := zap.NewProduction()
var ret models.Response
uri := "https://devcpone.aplikasi.web.id/one-api/v1/system/auth/multi_login"
params := url.Values{}
params.Add("username", username)
params.Add("password", password)
resp, err := http.PostForm(uri, params)
if err != nil {
defer logger.Sync()
logger.Error("error request post", zap.Any("error", err))
return ret, err
}
defer resp.Body.Close()
body, err := io.ReadAll(resp.Body)
if err != nil {
defer logger.Sync()
logger.Error("error read body", zap.Any("error", err))
return ret, err
}
err = json.Unmarshal(body, &ret)
if err != nil {
defer logger.Sync()
logger.Error("error parse body", zap.Any("error", err))
return ret, err
}
return ret, nil
}

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

@@ -1,12 +0,0 @@
package utils
import (
"golang.org/x/text/language"
"golang.org/x/text/message"
)
func FormatRibuan(amount int) string {
p := message.NewPrinter(language.Indonesian)
formated := p.Sprintf("%v", amount)
return formated
}

42
utils/getage.utils.go Normal file
View File

@@ -0,0 +1,42 @@
package utils
import (
"fmt"
"time"
)
func daysInMonth(t time.Time) int {
firstDayOfMonth := time.Date(t.Year(), t.Month(), 1, 0, 0, 0, 0, t.Location())
firstDayOfNextMonth := firstDayOfMonth.AddDate(0, 1, 0)
return int(firstDayOfNextMonth.Sub(firstDayOfMonth).Hours() / 24)
}
func CalculateStringAge(birthDateStr string) (int, int, int, error) {
layout := "2006-01-02"
birthDate, err := time.Parse(layout, birthDateStr)
if err != nil {
return 0, 0, 0, err
}
currentDate := time.Now()
if currentDate.Before(birthDate) {
return 0, 0, 0, fmt.Errorf("birth date is in the future")
}
years := currentDate.Year() - birthDate.Year()
months := int(currentDate.Month() - birthDate.Month())
days := currentDate.Day() - birthDate.Day()
// Adjust if current month and day are before birth month and day
if days < 0 {
previousMonth := currentDate.AddDate(0, -1, 0)
days += daysInMonth(previousMonth)
months--
}
if months < 0 {
years--
months += 12
}
return years, months, days, nil
}

View File

@@ -1,117 +0,0 @@
package corporate_dashboardpic
import "cpone/layout"
import "cpone/component/customtextfield"
import "cpone/models"
templ DashboardPic(
listID string,
paginationID string,
breadcrumb templ.Component,
filtercomponent templ.Component,
listingcomponent templ.Component,
paginationcomponent templ.Component,
) {
<div class="container-fluid">
@customtextfield.CustomTextFieldv2(models.CustomTextFieldv2Prm{ID: "listID",
Name: "listID",
Type: "hidden",
Value: listID})
@customtextfield.CustomTextFieldv2(models.CustomTextFieldv2Prm{ID: "paginationID",
Name: "paginationID",
Type: "hidden",
Value: paginationID})
<div class="row align-item-center mb-10">
<div class="col-md-10 col-sm-12 p-0">
@breadcrumb
</div>
</div>
@filtercomponent
<div id="loading-parent" class="rounded">
@listingcomponent
@paginationcomponent
<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>
}
templ JSDashboardPIC() {
<script>
document.body.addEventListener('htmx:configRequest', function(evt) {
const token = localStorage.getItem("token");
if (token) {
evt.detail.headers['Authentication'] = "Bearer " + token;
}
});
</script>
}
templ CSSDashboardPIC() {
<link
rel="stylesheet"
href="assets/css/googlefont/poppins.css"
/>
<link
rel="stylesheet"
href="assets/css/googlefont/publicsans.css"
/>
<link
rel="stylesheet"
href="assets/css/googlefont/roboto.css"
/>
<style>
body {
background-color: white;
}
#div-chart {
margin: 40px 10vw 40px 10vw;
}
.title {
font-size: 20px;
font-weight: bold;
}
#title {
font-weight: 600;
}
</style>
}
script BeforeRequestContent() {
const loadingParent = document.getElementById("loading-parent");
const loadingChild = document.getElementById("loading-child");
const loadingSpinner = document.getElementById("loading-spinner");
loadingParent.classList.add("overlay");
loadingParent.classList.add("overlay-block");
loadingChild.classList.add("overlay-layer");
loadingSpinner.classList.remove("d-none");
}
script AfterRequestContent() {
const loadingParent = document.getElementById("loading-parent");
const loadingChild = document.getElementById("loading-child");
const loadingSpinner = document.getElementById("loading-spinner");
loadingParent.classList.remove("overlay");
loadingParent.classList.remove("overlay-block");
loadingChild.classList.remove("overlay-layer");
loadingSpinner.classList.add("d-none");
}
templ ShowDashboardPic(
title string,
cmp templ.Component,
css templ.Component,
js templ.Component,
navbaruser templ.Component,
userprofile templ.Component,
) {
@layout.DashboardLayout(title, css, js, navbaruser, userprofile) {
@cmp
}
}

View File

@@ -1,220 +0,0 @@
// Code generated by templ - DO NOT EDIT.
// templ: version: v0.2.663
package corporate_dashboardpic
//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/layout"
import "cpone/component/customtextfield"
import "cpone/models"
func DashboardPic(
listID string,
paginationID string,
breadcrumb templ.Component,
filtercomponent templ.Component,
listingcomponent templ.Component,
paginationcomponent templ.Component,
) templ.Component {
return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) {
templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer)
if !templ_7745c5c3_IsBuffer {
templ_7745c5c3_Buffer = templ.GetBuffer()
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Var1 := templ.GetChildren(ctx)
if templ_7745c5c3_Var1 == nil {
templ_7745c5c3_Var1 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div class=\"container-fluid\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = customtextfield.CustomTextFieldv2(models.CustomTextFieldv2Prm{ID: "listID",
Name: "listID",
Type: "hidden",
Value: listID}).Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = customtextfield.CustomTextFieldv2(models.CustomTextFieldv2Prm{ID: "paginationID",
Name: "paginationID",
Type: "hidden",
Value: paginationID}).Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div class=\"row align-item-center mb-10\"><div class=\"col-md-10 col-sm-12 p-0\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = breadcrumb.Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</div></div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = filtercomponent.Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div id=\"loading-parent\" class=\"rounded\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = listingcomponent.Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = paginationcomponent.Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<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
}
if !templ_7745c5c3_IsBuffer {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W)
}
return templ_7745c5c3_Err
})
}
func JSDashboardPIC() templ.Component {
return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) {
templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer)
if !templ_7745c5c3_IsBuffer {
templ_7745c5c3_Buffer = templ.GetBuffer()
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Var2 := templ.GetChildren(ctx)
if templ_7745c5c3_Var2 == nil {
templ_7745c5c3_Var2 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<script>\r\n\t\tdocument.body.addEventListener('htmx:configRequest', function(evt) {\r\n\t\t\tconst token = localStorage.getItem(\"token\");\r\n\t\t\tif (token) {\r\n\t\t\t\tevt.detail.headers['Authentication'] = \"Bearer \" + token;\r\n\t\t\t}\r\n\t\t});\t\r\n\t</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 CSSDashboardPIC() templ.Component {
return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) {
templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer)
if !templ_7745c5c3_IsBuffer {
templ_7745c5c3_Buffer = templ.GetBuffer()
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Var3 := templ.GetChildren(ctx)
if templ_7745c5c3_Var3 == nil {
templ_7745c5c3_Var3 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<link rel=\"stylesheet\" href=\"assets/css/googlefont/poppins.css\"><link rel=\"stylesheet\" href=\"assets/css/googlefont/publicsans.css\"><link rel=\"stylesheet\" href=\"assets/css/googlefont/roboto.css\"><style>\r\n body {\r\n background-color: white;\r\n }\r\n #div-chart {\r\n margin: 40px 10vw 40px 10vw;\r\n }\r\n .title {\r\n font-size: 20px;\r\n font-weight: bold;\r\n }\r\n #title {\r\n font-weight: 600;\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)
}
return templ_7745c5c3_Err
})
}
func BeforeRequestContent() templ.ComponentScript {
return templ.ComponentScript{
Name: `__templ_BeforeRequestContent_5717`,
Function: `function __templ_BeforeRequestContent_5717(){const loadingParent = document.getElementById("loading-parent");
const loadingChild = document.getElementById("loading-child");
const loadingSpinner = document.getElementById("loading-spinner");
loadingParent.classList.add("overlay");
loadingParent.classList.add("overlay-block");
loadingChild.classList.add("overlay-layer");
loadingSpinner.classList.remove("d-none");
}`,
Call: templ.SafeScript(`__templ_BeforeRequestContent_5717`),
CallInline: templ.SafeScriptInline(`__templ_BeforeRequestContent_5717`),
}
}
func AfterRequestContent() templ.ComponentScript {
return templ.ComponentScript{
Name: `__templ_AfterRequestContent_077f`,
Function: `function __templ_AfterRequestContent_077f(){const loadingParent = document.getElementById("loading-parent");
const loadingChild = document.getElementById("loading-child");
const loadingSpinner = document.getElementById("loading-spinner");
loadingParent.classList.remove("overlay");
loadingParent.classList.remove("overlay-block");
loadingChild.classList.remove("overlay-layer");
loadingSpinner.classList.add("d-none");
}`,
Call: templ.SafeScript(`__templ_AfterRequestContent_077f`),
CallInline: templ.SafeScriptInline(`__templ_AfterRequestContent_077f`),
}
}
func ShowDashboardPic(
title string,
cmp templ.Component,
css templ.Component,
js templ.Component,
navbaruser templ.Component,
userprofile templ.Component,
) templ.Component {
return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) {
templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer)
if !templ_7745c5c3_IsBuffer {
templ_7745c5c3_Buffer = templ.GetBuffer()
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Var4 := templ.GetChildren(ctx)
if templ_7745c5c3_Var4 == nil {
templ_7745c5c3_Var4 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
templ_7745c5c3_Var5 := templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) {
templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer)
if !templ_7745c5c3_IsBuffer {
templ_7745c5c3_Buffer = templ.GetBuffer()
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
templ_7745c5c3_Err = cmp.Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if !templ_7745c5c3_IsBuffer {
_, templ_7745c5c3_Err = io.Copy(templ_7745c5c3_W, templ_7745c5c3_Buffer)
}
return templ_7745c5c3_Err
})
templ_7745c5c3_Err = layout.DashboardLayout(title, css, js, navbaruser, userprofile).Render(templ.WithChildren(ctx, templ_7745c5c3_Var5), templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if !templ_7745c5c3_IsBuffer {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W)
}
return templ_7745c5c3_Err
})
}

View File

@@ -1,68 +0,0 @@
package corporate_dashboardpic
templ FilterListing(
hxGet string,
hxTrigger string,
hxInclude string,
hxSwap string,
hxTarget string,
hxBeforeRequest templ.ComponentScript,
hxAfterRequest templ.ComponentScript,
) {
<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">
<input
id="startdateID"
name="startdate"
class="form-control form-control-lg bg-field border-0 rounded-lg"
type="date"
autocomplete="off"
hx-get={ hxGet }
hx-trigger={ hxTrigger }
hx-include={ hxInclude }
hx-swap={ hxSwap }
hx-target={ hxTarget }
hx-on::before-request={ hxBeforeRequest }
hx-on::after-request={ hxAfterRequest }
/>
</div>
<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">End Date:</label>
</div>
<div class="col-12 col-sm-9 col-md-2 col-lg-2 col-xl-2 mb-2">
<input
id="enddateID"
name="enddate"
class="form-control form-control-lg bg-field border-0 rounded-lg"
type="date"
autocomplete="off"
hx-get={ hxGet }
hx-trigger={ hxTrigger }
hx-include={ hxInclude }
hx-swap={ hxSwap }
hx-target={ hxTarget }
hx-on::before-request={ hxBeforeRequest }
hx-on::after-request={ hxAfterRequest }
/>
</div>
<div class="col-12 col-sm-12 col-md-6 col-lg-6 col-xl-6 mb-2">
<input
id="searchID"
name="search"
class="form-control form-control-lg bg-field border-0 rounded-lg"
type="text"
placeholder="nama karyawan"
hx-get={ hxGet }
hx-trigger={ hxTrigger }
hx-include={ hxInclude }
hx-swap={ hxSwap }
hx-target={ hxTarget }
hx-on::before-request={ hxBeforeRequest }
hx-on::after-request={ hxAfterRequest }
/>
</div>
</div>
}

View File

@@ -1,316 +0,0 @@
// Code generated by templ - DO NOT EDIT.
// templ: version: v0.2.663
package corporate_dashboardpic
//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"
func FilterListing(
hxGet string,
hxTrigger string,
hxInclude string,
hxSwap string,
hxTarget string,
hxBeforeRequest templ.ComponentScript,
hxAfterRequest 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_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 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\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = templ.RenderScriptItems(ctx, templ_7745c5c3_Buffer, hxBeforeRequest, hxAfterRequest)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<input id=\"startdateID\" name=\"startdate\" class=\"form-control form-control-lg bg-field border-0 rounded-lg\" type=\"date\" autocomplete=\"off\" hx-get=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var2 string
templ_7745c5c3_Var2, templ_7745c5c3_Err = templ.JoinStringErrs(hxGet)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\dashboardpic\filterdashboardpic.templ`, Line: 23, Col: 30}
}
_, 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("\" hx-trigger=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var3 string
templ_7745c5c3_Var3, templ_7745c5c3_Err = templ.JoinStringErrs(hxTrigger)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\dashboardpic\filterdashboardpic.templ`, Line: 24, Col: 38}
}
_, 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-include=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var4 string
templ_7745c5c3_Var4, templ_7745c5c3_Err = templ.JoinStringErrs(hxInclude)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\dashboardpic\filterdashboardpic.templ`, Line: 25, Col: 38}
}
_, 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\dashboardpic\filterdashboardpic.templ`, Line: 26, Col: 32}
}
_, 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-target=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var6 string
templ_7745c5c3_Var6, templ_7745c5c3_Err = templ.JoinStringErrs(hxTarget)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\dashboardpic\filterdashboardpic.templ`, Line: 27, Col: 36}
}
_, 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-on::before-request=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var7 templ.ComponentScript = hxBeforeRequest
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var7.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_Var8 templ.ComponentScript = hxAfterRequest
_, 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("\"></div><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\">End 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
}
templ_7745c5c3_Err = templ.RenderScriptItems(ctx, templ_7745c5c3_Buffer, hxBeforeRequest, hxAfterRequest)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<input id=\"enddateID\" name=\"enddate\" class=\"form-control form-control-lg bg-field border-0 rounded-lg\" type=\"date\" autocomplete=\"off\" hx-get=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var9 string
templ_7745c5c3_Var9, templ_7745c5c3_Err = templ.JoinStringErrs(hxGet)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\dashboardpic\filterdashboardpic.templ`, Line: 42, Col: 30}
}
_, 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("\" hx-trigger=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var10 string
templ_7745c5c3_Var10, templ_7745c5c3_Err = templ.JoinStringErrs(hxTrigger)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\dashboardpic\filterdashboardpic.templ`, Line: 43, Col: 38}
}
_, 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("\" hx-include=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var11 string
templ_7745c5c3_Var11, templ_7745c5c3_Err = templ.JoinStringErrs(hxInclude)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\dashboardpic\filterdashboardpic.templ`, Line: 44, Col: 38}
}
_, 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-swap=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var12 string
templ_7745c5c3_Var12, templ_7745c5c3_Err = templ.JoinStringErrs(hxSwap)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\dashboardpic\filterdashboardpic.templ`, Line: 45, Col: 32}
}
_, 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(hxTarget)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\dashboardpic\filterdashboardpic.templ`, Line: 46, Col: 36}
}
_, 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-on::before-request=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var14 templ.ComponentScript = hxBeforeRequest
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var14.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_Var15 templ.ComponentScript = hxAfterRequest
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var15.Call)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\"></div><div class=\"col-12 col-sm-12 col-md-6 col-lg-6 col-xl-6 mb-2\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = templ.RenderScriptItems(ctx, templ_7745c5c3_Buffer, hxBeforeRequest, hxAfterRequest)
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=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var16 string
templ_7745c5c3_Var16, templ_7745c5c3_Err = templ.JoinStringErrs(hxGet)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\dashboardpic\filterdashboardpic.templ`, Line: 58, Col: 30}
}
_, 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-trigger=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var17 string
templ_7745c5c3_Var17, templ_7745c5c3_Err = templ.JoinStringErrs(hxTrigger)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\dashboardpic\filterdashboardpic.templ`, Line: 59, Col: 38}
}
_, 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-include=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var18 string
templ_7745c5c3_Var18, templ_7745c5c3_Err = templ.JoinStringErrs(hxInclude)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\dashboardpic\filterdashboardpic.templ`, Line: 60, Col: 38}
}
_, 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-swap=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var19 string
templ_7745c5c3_Var19, templ_7745c5c3_Err = templ.JoinStringErrs(hxSwap)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\dashboardpic\filterdashboardpic.templ`, Line: 61, Col: 32}
}
_, 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-target=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var20 string
templ_7745c5c3_Var20, templ_7745c5c3_Err = templ.JoinStringErrs(hxTarget)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\dashboardpic\filterdashboardpic.templ`, Line: 62, Col: 36}
}
_, 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-on::before-request=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var21 templ.ComponentScript = hxBeforeRequest
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var21.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_Var22 templ.ComponentScript = hxAfterRequest
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var22.Call)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\"></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

@@ -1,48 +0,0 @@
package corporate_dashboardpic
import "cpone/models"
import "strconv"
templ ListingData(
data []models.DashboardPic,
listID string,
) {
<div id={listID} class="align-items-center py-8 flex-column" hx-swap-oob="true">
if len(data) == 0 {
<div class="text-center">
<h4>Data Tidak Ditemukan</h4>
</div>
} else {
<div class="bg-field rounded">
<div class="p-8">
for i, d := range data {
if i == (len(data) - 1) {
<div id={ strconv.Itoa(int(d.Mgm_McuID)) } class="card shadow p-8" hx-get={"/corp/dashboard_pic/click/" + strconv.Itoa(d.Mgm_McuID)}>
@ItemCard(d)
</div>
} else {
<div id={ strconv.Itoa(int(d.Mgm_McuID)) } class="card shadow p-8 mb-8" hx-get={"/corp/dashboard_pic/click/" + strconv.Itoa(d.Mgm_McuID)}>
@ItemCard(d)
</div>
}
}
</div>
</div>
}
</div>
}
templ ItemCard(data models.DashboardPic) {
<div class="row d-flex align-items-center">
<div class="col-7">
<h3 class="text-black">{ data.Mgm_McuLabel }</h3>
</div>
<div class="col-md col-lg text-right">
<span class="text-black font-weight-bolder">{ data.Mgm_McuNote }</span>
</div>
<div class="col-md col-lg text-right">
<span class="text-black font-weight-bolder">{ data.Mgm_McuStartDate } - { data.Mgm_McuEndDate }</span>
</div>
</div>
}

View File

@@ -1,230 +0,0 @@
// Code generated by templ - DO NOT EDIT.
// templ: version: v0.2.663
package corporate_dashboardpic
//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 ListingData(
data []models.DashboardPic,
listID string,
) templ.Component {
return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) {
templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer)
if !templ_7745c5c3_IsBuffer {
templ_7745c5c3_Buffer = templ.GetBuffer()
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Var1 := templ.GetChildren(ctx)
if templ_7745c5c3_Var1 == nil {
templ_7745c5c3_Var1 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div id=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var2 string
templ_7745c5c3_Var2, templ_7745c5c3_Err = templ.JoinStringErrs(listID)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\dashboardpic\listingdashboardpic.templ`, Line: 10, Col: 19}
}
_, 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=\"align-items-center py-8 flex-column\" hx-swap-oob=\"true\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if len(data) == 0 {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div class=\"text-center\"><h4>Data Tidak Ditemukan</h4></div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
} else {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div class=\"bg-field rounded\"><div class=\"p-8\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
for i, d := range data {
if i == (len(data) - 1) {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div id=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var3 string
templ_7745c5c3_Var3, templ_7745c5c3_Err = templ.JoinStringErrs(strconv.Itoa(int(d.Mgm_McuID)))
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\dashboardpic\listingdashboardpic.templ`, Line: 20, Col: 68}
}
_, 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("\" class=\"card shadow p-8\" hx-get=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var4 string
templ_7745c5c3_Var4, templ_7745c5c3_Err = templ.JoinStringErrs("/corp/dashboard_pic/click/" + strconv.Itoa(d.Mgm_McuID))
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\dashboardpic\listingdashboardpic.templ`, Line: 20, Col: 159}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var4))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = ItemCard(d).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
}
} else {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div id=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var5 string
templ_7745c5c3_Var5, templ_7745c5c3_Err = templ.JoinStringErrs(strconv.Itoa(int(d.Mgm_McuID)))
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\dashboardpic\listingdashboardpic.templ`, Line: 24, Col: 68}
}
_, 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("\" class=\"card shadow p-8 mb-8\" hx-get=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var6 string
templ_7745c5c3_Var6, templ_7745c5c3_Err = templ.JoinStringErrs("/corp/dashboard_pic/click/" + strconv.Itoa(d.Mgm_McuID))
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\dashboardpic\listingdashboardpic.templ`, Line: 24, Col: 164}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var6))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = ItemCard(d).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
}
}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</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 !templ_7745c5c3_IsBuffer {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W)
}
return templ_7745c5c3_Err
})
}
func ItemCard(data models.DashboardPic) 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 class=\"row d-flex align-items-center\"><div class=\"col-7\"><h3 class=\"text-black\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var8 string
templ_7745c5c3_Var8, templ_7745c5c3_Err = templ.JoinStringErrs(data.Mgm_McuLabel)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\dashboardpic\listingdashboardpic.templ`, Line: 38, Col: 54}
}
_, 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("</h3></div><div class=\"col-md col-lg text-right\"><span class=\"text-black font-weight-bolder\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var9 string
templ_7745c5c3_Var9, templ_7745c5c3_Err = templ.JoinStringErrs(data.Mgm_McuNote)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\dashboardpic\listingdashboardpic.templ`, Line: 41, Col: 74}
}
_, 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("</span></div><div class=\"col-md col-lg text-right\"><span class=\"text-black font-weight-bolder\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var10 string
templ_7745c5c3_Var10, templ_7745c5c3_Err = templ.JoinStringErrs(data.Mgm_McuStartDate)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\dashboardpic\listingdashboardpic.templ`, Line: 44, Col: 79}
}
_, 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(" - ")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var11 string
templ_7745c5c3_Var11, templ_7745c5c3_Err = templ.JoinStringErrs(data.Mgm_McuEndDate)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\dashboardpic\listingdashboardpic.templ`, Line: 44, Col: 105}
}
_, 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("</span></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
})
}

Some files were not shown because too many files have changed in this diff Show More