Reports done. Eval rating supported
This commit is contained in:
parent
95d23a3239
commit
4cf19d1ea7
@ -1,4 +1,4 @@
|
|||||||
vernum = "1.0.250601.1020"
|
vernum = "1.0.250704.0335"
|
||||||
async function getJson(url,headers={}) {
|
async function getJson(url,headers={}) {
|
||||||
try {
|
try {
|
||||||
const response = await fetch(url);
|
const response = await fetch(url);
|
||||||
|
230
index.html
230
index.html
@ -21,6 +21,7 @@
|
|||||||
}
|
}
|
||||||
*::-webkit-scrollbar, .main::-webkit-scrollbar {
|
*::-webkit-scrollbar, .main::-webkit-scrollbar {
|
||||||
width: .8ch;
|
width: .8ch;
|
||||||
|
height: .8ch;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Scrollbar thumb (the draggable part) */
|
/* Scrollbar thumb (the draggable part) */
|
||||||
@ -28,120 +29,119 @@
|
|||||||
background: var(--secondary-background); /* Dark semi-transparent */
|
background: var(--secondary-background); /* Dark semi-transparent */
|
||||||
border-radius: .2ch; /* Rounded edges */
|
border-radius: .2ch; /* Rounded edges */
|
||||||
}
|
}
|
||||||
/* body
|
*::-webkit-scrollbar-track, .main::-webkit-scrollbar-track {
|
||||||
{
|
background: var(--input-background);
|
||||||
height: 100%;
|
}
|
||||||
} */
|
h2, h3, h4
|
||||||
h2, h3, h4
|
{
|
||||||
{
|
margin: .25em 0;
|
||||||
margin: .25em 0;
|
}
|
||||||
}
|
aside
|
||||||
aside
|
{
|
||||||
{
|
display: block;
|
||||||
display: block;
|
position: absolute;
|
||||||
position: absolute;
|
top: 0;
|
||||||
top: 0;
|
left: 0;
|
||||||
left: 0;
|
min-height: 100%;
|
||||||
min-height: 100%;
|
width: 30ch;
|
||||||
width: 30ch;
|
background-color: var(--primary-table);
|
||||||
background-color: var(--primary-table);
|
color: var(--primary-background);
|
||||||
color: var(--primary-background);
|
padding: .5ch;
|
||||||
padding: .5ch;
|
padding-top: 3.5em;
|
||||||
padding-top: 3.5em;
|
box-shadow: var(--primary-foreground) .65ch 0, inset var(--primary-foreground) -13px 0 20px -25px;
|
||||||
box-shadow: var(--primary-foreground) .65ch 0, inset var(--primary-foreground) -13px 0 20px -25px;
|
}
|
||||||
}
|
.logobox
|
||||||
.logobox
|
{
|
||||||
{
|
height: 3em;
|
||||||
height: 3em;
|
position: absolute;
|
||||||
position: fixed;
|
top: .5ch;
|
||||||
top: .5ch;
|
left: 0;
|
||||||
left: 0;
|
width: inherit;
|
||||||
width: inherit;
|
padding: 0 .5ch .5ch .5ch;
|
||||||
padding: 0 .5ch .5ch .5ch;
|
border-bottom: 1px solid var(--secondary-background);
|
||||||
border-bottom: 1px solid var(--secondary-background);
|
}
|
||||||
}
|
.sidebar
|
||||||
.sidebar
|
{
|
||||||
{
|
display: block;
|
||||||
display: block;
|
position: absolute;
|
||||||
position: absolute;
|
top: calc(3em + 1ch);
|
||||||
top: calc(3em + 1ch);
|
left: 0;
|
||||||
left: 0;
|
width: calc(100% - .25ch);
|
||||||
width: calc(100% - .25ch);
|
max-height: calc(100% - (3em + 1.5ch));
|
||||||
max-height: calc(100% - (3em + 1.5ch));
|
overflow-x: auto;
|
||||||
overflow-x: auto;
|
}
|
||||||
}
|
.sidebar::-webkit-scrollbar, .main::-webkit-scrollbar {
|
||||||
.sidebar::-webkit-scrollbar, .main::-webkit-scrollbar {
|
width: .8ch;
|
||||||
width: .8ch;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
/* Scrollbar thumb (the draggable part) */
|
/* Scrollbar thumb (the draggable part) */
|
||||||
.sidebar::-webkit-scrollbar-thumb, .main::-webkit-scrollbar-thumb {
|
.sidebar::-webkit-scrollbar-thumb, .main::-webkit-scrollbar-thumb {
|
||||||
background: var(--secondary-background); /* Dark semi-transparent */
|
background: var(--secondary-background); /* Dark semi-transparent */
|
||||||
border-radius: .2ch; /* Rounded edges */
|
border-radius: .2ch; /* Rounded edges */
|
||||||
}
|
}
|
||||||
.item
|
.item
|
||||||
{
|
{
|
||||||
height: 2em;
|
height: 2em;
|
||||||
line-height: 2em;
|
line-height: 2em;
|
||||||
margin-left: 1ch;
|
margin-left: 1ch;
|
||||||
margin-right: 1ch;
|
margin-right: 1ch;
|
||||||
background-color: var(--primary-table);
|
background-color: var(--primary-table);
|
||||||
padding-left: 1ch;
|
padding-left: 1ch;
|
||||||
padding-right: 1ch;
|
padding-right: 1ch;
|
||||||
border-radius: .25ch;
|
border-radius: .25ch;
|
||||||
cursor: default;
|
cursor: default;
|
||||||
user-select: none;
|
user-select: none;
|
||||||
}
|
}
|
||||||
.item:hover
|
.item:hover
|
||||||
{
|
{
|
||||||
filter: brightness(1.2);
|
filter: brightness(1.2);
|
||||||
}
|
}
|
||||||
.item[data-active]
|
.item[data-active]
|
||||||
{
|
{
|
||||||
filter: brightness(1.4);
|
filter: brightness(1.4);
|
||||||
}
|
}
|
||||||
.sub.item
|
.sub.item
|
||||||
{
|
{
|
||||||
padding-left: 3ch;
|
padding-left: 3ch;
|
||||||
}
|
}
|
||||||
#main
|
#main
|
||||||
{
|
{
|
||||||
display: block;
|
display: block;
|
||||||
position: relative;
|
position: relative;
|
||||||
margin-left: 30ch;
|
margin-left: 30ch;
|
||||||
padding: .5ch .5ch .5ch 0;
|
padding: .5ch .5ch .5ch 0;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
backdrop-filter: blur(7px);
|
backdrop-filter: blur(7px);
|
||||||
background-color: var(--semi-background);
|
background-color: var(--semi-background);
|
||||||
}
|
}
|
||||||
nav
|
nav
|
||||||
{
|
{
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: auto 1fr auto;
|
grid-template-columns: auto 1fr auto;
|
||||||
height: 3em;
|
height: 3em;
|
||||||
padding-left: 2ch;
|
padding-left: 2ch;
|
||||||
padding-right: 2ch;
|
padding-right: 2ch;
|
||||||
line-height: 3em;
|
line-height: 3em;
|
||||||
border-bottom: 1px solid var(--input-background);
|
border-bottom: 1px solid var(--input-background);
|
||||||
}
|
}
|
||||||
#content
|
#content
|
||||||
{
|
{
|
||||||
display: block;
|
display: block;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
min-height: calc(100% - 6em);
|
min-height: calc(100% - 6em);
|
||||||
padding: .5ch 1ch;
|
padding: .5ch 1ch;
|
||||||
}
|
}
|
||||||
#footer
|
#footer
|
||||||
{
|
{
|
||||||
height: 3em;
|
height: 3em;
|
||||||
padding: .5em;
|
padding: .5em;
|
||||||
line-height: 2em;
|
line-height: 2em;
|
||||||
border-top: 1px solid var(--input-background);
|
border-top: 1px solid var(--input-background);
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: auto 1fr auto;
|
grid-template-columns: auto 1fr auto;
|
||||||
color: var(--secondary-foreground);
|
color: var(--secondary-foreground);
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body style="margin: 0; height: 100%; background-color: var(--primary-background);">
|
<body style="margin: 0; height: 100%; background-color: var(--primary-background);">
|
||||||
@ -184,6 +184,7 @@ nav
|
|||||||
|
|
||||||
<div>
|
<div>
|
||||||
<span id="username">User Name</span>
|
<span id="username">User Name</span>
|
||||||
|
<div id="prof" style="height: 2.5em; width: 2.5em; vertical-align: middle; display: inline-block; border-radius: 1.25em; background-repeat:no-repeat; background-size: cover; background-position: center top;"></div>
|
||||||
<sep-bar></sep-bar>
|
<sep-bar></sep-bar>
|
||||||
<a-button type="blend" id="lo"><m-inline>logout</m-inline> Keluar</a-button>
|
<a-button type="blend" id="lo"><m-inline>logout</m-inline> Keluar</a-button>
|
||||||
</div>
|
</div>
|
||||||
@ -254,7 +255,8 @@ nav
|
|||||||
});
|
});
|
||||||
if(res.status == 200) location = "/login.html";
|
if(res.status == 200) location = "/login.html";
|
||||||
});
|
});
|
||||||
$('#username').text(loggedInAgent.name)
|
$('#username').text(loggedInAgent.name);
|
||||||
|
$('#prof').css("background-image","url("+(loggedInAgent.photoURL ?? "/assets/images/generic-user.webp")+")");
|
||||||
$('.item, .subitem').click(async (e)=>{
|
$('.item, .subitem').click(async (e)=>{
|
||||||
if (window.shellnavigating) return;
|
if (window.shellnavigating) return;
|
||||||
window.dispatchEvent(new Event("viewChange"));
|
window.dispatchEvent(new Event("viewChange"));
|
||||||
|
@ -184,7 +184,7 @@
|
|||||||
const sortedProkers = [...currProkers].filter(r=>r.journal.at(-1).status >= 1 && r.journal.at(-1).status <=3 ).sort((a,b)=>a.deadline - b.deadline);
|
const sortedProkers = [...currProkers].filter(r=>r.journal.at(-1).status >= 1 && r.journal.at(-1).status <=3 ).sort((a,b)=>a.deadline - b.deadline);
|
||||||
const closest = sortedProkers.find(p=>p.journal.at(-1).status == 2);
|
const closest = sortedProkers.find(p=>p.journal.at(-1).status == 2);
|
||||||
µ('#udate').text(closest ? `${closest.deadline.getFullYear()}/${(closest.deadline.getMonth()+1).toString().padStart(2,"0")}/${closest.deadline.getDate().toString().padStart(2,"0")}` : "");
|
µ('#udate').text(closest ? `${closest.deadline.getFullYear()}/${(closest.deadline.getMonth()+1).toString().padStart(2,"0")}/${closest.deadline.getDate().toString().padStart(2,"0")}` : "");
|
||||||
µ('#utext').text(closest ? closest.sasaran : "");
|
µ('#utext').text(closest ? (closest.owner.name + ": " + closest.sasaran) : "");
|
||||||
const todayActs = sortedProkers.filter(p=>
|
const todayActs = sortedProkers.filter(p=>
|
||||||
{
|
{
|
||||||
const today = new Date();
|
const today = new Date();
|
||||||
@ -204,7 +204,7 @@
|
|||||||
s.append(v.journal.at(-1).status == 1 ? `Ditolak: `: v.journal.at(-1).status == 2 ? `Diajukan: ` : `Disetujui: `);
|
s.append(v.journal.at(-1).status == 1 ? `Ditolak: `: v.journal.at(-1).status == 2 ? `Diajukan: ` : `Disetujui: `);
|
||||||
s.style.fontWeight = "600"
|
s.style.fontWeight = "600"
|
||||||
s.style.color = v.journal.at(-1).status == 1 ? "var(--neutral-p-accent)": v.journal.at(-1).status == 2 ? "var(--neutral-n-accent)" : "var(--positive-accent)"
|
s.style.color = v.journal.at(-1).status == 1 ? "var(--neutral-p-accent)": v.journal.at(-1).status == 2 ? "var(--neutral-n-accent)" : "var(--positive-accent)"
|
||||||
t.append(v.sasaran)
|
t.append(v.owner.name +": "+v.sasaran)
|
||||||
µ('#htoday').append(d);
|
µ('#htoday').append(d);
|
||||||
});
|
});
|
||||||
moly.loadScreen.close(loadid);
|
moly.loadScreen.close(loadid);
|
||||||
|
@ -50,7 +50,6 @@
|
|||||||
<script type="module">
|
<script type="module">
|
||||||
const thisDialog = moly.lastDialog();
|
const thisDialog = moly.lastDialog();
|
||||||
const data = thisDialog.data;
|
const data = thisDialog.data;
|
||||||
console.log(data);
|
|
||||||
function µ(selector)
|
function µ(selector)
|
||||||
{
|
{
|
||||||
if (selector) return $(thisDialog.box).find(selector);
|
if (selector) return $(thisDialog.box).find(selector);
|
||||||
|
@ -13,12 +13,12 @@
|
|||||||
<a-button id="newProker">Tambah Kegiatan</a-button>
|
<a-button id="newProker">Tambah Kegiatan</a-button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div style="max-height: calc(50vh - 6em); overflow-y: scroll; margin: 0 0 1em 0; padding: 0 2ch 2ch 2ch;" id="pkWrapper">
|
<div style="max-height: calc(80vh - 6em); overflow: auto; margin: 0 0 1em 0; padding: 0 2ch 2ch 2ch;" id="pkWrapper">
|
||||||
<table id="proker" class="bordered selectable">
|
<table id="proker" class="bordered selectable">
|
||||||
<colgroup>
|
<colgroup>
|
||||||
<col style="width: 4ch;">
|
<col style="width: 4ch;">
|
||||||
<col style="width: 27ch;">
|
<col style="width: 27ch;">
|
||||||
<col>
|
<col style="min-width: 12ch;">
|
||||||
<col style="width: 8ch;">
|
<col style="width: 8ch;">
|
||||||
<col style="width: 17ch;">
|
<col style="width: 17ch;">
|
||||||
<col style="width: 16ch;">
|
<col style="width: 16ch;">
|
||||||
@ -174,6 +174,7 @@
|
|||||||
no.style.textAlign = "right";
|
no.style.textAlign = "right";
|
||||||
kg.append(kegiatanName[v.kegiatan]);
|
kg.append(kegiatanName[v.kegiatan]);
|
||||||
ss.append(v.sasaran);
|
ss.append(v.sasaran);
|
||||||
|
ss.setAttribute("title",v.sasaran)
|
||||||
tw.append(`${v.timeTarget} ${v.isInMonth ? "Bulan" : "Hari"}`);
|
tw.append(`${v.timeTarget} ${v.isInMonth ? "Bulan" : "Hari"}`);
|
||||||
tw.style.textAlign = "center";
|
tw.style.textAlign = "center";
|
||||||
wm.append(((v.startDay == null ? "" : v.startDay.toString().padStart(2,"0") + " ") + monthName[v.startMonth] + " " + v.year));
|
wm.append(((v.startDay == null ? "" : v.startDay.toString().padStart(2,"0") + " ") + monthName[v.startMonth] + " " + v.year));
|
||||||
|
585
modules/laporan-view.html
Normal file
585
modules/laporan-view.html
Normal file
@ -0,0 +1,585 @@
|
|||||||
|
<div style="display: grid; width: calc(90vw - 3ch); height: calc(90vh - 3.5em); grid-template-rows: 1fr auto; row-gap: .5em;">
|
||||||
|
<div style=>
|
||||||
|
<div id="vProker" class="viewer" style="height: 100%;" hidden>
|
||||||
|
<div style="text-align: center; font-size: 1.1em; font-weight: 600;">
|
||||||
|
Program Kerja Agen Perubahan Tahun <span class="yr"></span>
|
||||||
|
</div>
|
||||||
|
<div style="display: grid; grid-template-columns: auto 1fr auto; column-gap: .5ch; margin-bottom: .5em;">
|
||||||
|
<div style="display: grid; grid-template-columns: auto auto 1fr; column-gap: .5ch;">
|
||||||
|
<span>Agen</span>
|
||||||
|
<span>:</span>
|
||||||
|
<span class="name"></span>
|
||||||
|
<span>NIP</span>
|
||||||
|
<span>:</span>
|
||||||
|
<span class="nip"></span>
|
||||||
|
<span>Unit Kerja</span>
|
||||||
|
<span>:</span>
|
||||||
|
<span class="uk"></span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div style="display: grid; grid-template-columns: auto auto 1fr; column-gap: .5ch;">
|
||||||
|
<span>Supervisor</span>
|
||||||
|
<span>:</span>
|
||||||
|
<span class="names"></span>
|
||||||
|
<span>NIP</span>
|
||||||
|
<span>:</span>
|
||||||
|
<span class="nips"></span>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="tbwrapper" style="position: absolute; width: 100%; overflow: auto; max-height: calc(100% - 6.25em)">
|
||||||
|
<table class="bordered">
|
||||||
|
<colgroup>
|
||||||
|
<col style="width: 4ch;">
|
||||||
|
<col style="width: 27ch;">
|
||||||
|
<col style="min-width: 12ch;">
|
||||||
|
<col style="width: 8ch;">
|
||||||
|
<col style="width: 11ch;">
|
||||||
|
</colgroup>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>No</th>
|
||||||
|
<th>Kegiatan</th>
|
||||||
|
<th>Sasaran</th>
|
||||||
|
<th>Target</th>
|
||||||
|
<th>Mulai</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody id="pkContent">
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="vRenak" class="viewer" style="height: 100%;" hidden>
|
||||||
|
<div style="text-align: center; font-size: 1.1em; font-weight: 600;">
|
||||||
|
Rencana Aksi Agen Perubahan Tahun <span class="yr"></span>
|
||||||
|
</div>
|
||||||
|
<div style="display: grid; grid-template-columns: auto 1fr auto; column-gap: .5ch; margin-bottom: .5em;">
|
||||||
|
<div style="display: grid; grid-template-columns: auto auto 1fr; column-gap: .5ch;">
|
||||||
|
<span>Agen</span>
|
||||||
|
<span>:</span>
|
||||||
|
<span class="name"></span>
|
||||||
|
<span>NIP</span>
|
||||||
|
<span>:</span>
|
||||||
|
<span class="nip"></span>
|
||||||
|
<span>Unit Kerja</span>
|
||||||
|
<span>:</span>
|
||||||
|
<span class="uk"></span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div style="display: grid; grid-template-columns: auto auto 1fr; column-gap: .5ch;">
|
||||||
|
<span>Supervisor</span>
|
||||||
|
<span>:</span>
|
||||||
|
<span class="names"></span>
|
||||||
|
<span>NIP</span>
|
||||||
|
<span>:</span>
|
||||||
|
<span class="nips"></span>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="tbwrapper" style="position: absolute; width: 100%; overflow: auto; max-height: calc(100% - 6.25em)">
|
||||||
|
<table class="bordered">
|
||||||
|
<colgroup>
|
||||||
|
<col style="width: 4ch;">
|
||||||
|
<col style="min-width: 20ch;">
|
||||||
|
<col style="width: 20ch;">
|
||||||
|
<col style="width: 20ch;">
|
||||||
|
<col style="width: 8ch;">
|
||||||
|
<col style="min-width: 20ch;">
|
||||||
|
<col style="width: 11ch;">
|
||||||
|
<col style="width: 11ch;">
|
||||||
|
</colgroup>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>No</th>
|
||||||
|
<th>Inovasi</th>
|
||||||
|
<th>Sasaran</th>
|
||||||
|
<th>Indikator</th>
|
||||||
|
<th>Target</th>
|
||||||
|
<th>Aksi</th>
|
||||||
|
<th>Rencana Mulai</th>
|
||||||
|
<th>Selesai Pada</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody id="raContent">
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="vEval" class="viewer" style="height: 100%;" hidden>
|
||||||
|
<div style="text-align: center; font-size: 1.1em; font-weight: 600;">
|
||||||
|
Evaluasi Program Kerja Agen Perubahan Tahun <span class="yr"></span>
|
||||||
|
</div>
|
||||||
|
<div style="display: grid; grid-template-columns: auto 1fr auto; column-gap: .5ch; margin-bottom: .5em;">
|
||||||
|
<div style="display: grid; grid-template-columns: auto auto 1fr; column-gap: .5ch;">
|
||||||
|
<span>Agen</span>
|
||||||
|
<span>:</span>
|
||||||
|
<span class="name"></span>
|
||||||
|
<span>NIP</span>
|
||||||
|
<span>:</span>
|
||||||
|
<span class="nip"></span>
|
||||||
|
<span>Unit Kerja</span>
|
||||||
|
<span>:</span>
|
||||||
|
<span class="uk"></span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div style="display: grid; grid-template-columns: auto auto 1fr; column-gap: .5ch;">
|
||||||
|
<span>Evaluator</span>
|
||||||
|
<span>:</span>
|
||||||
|
<span class="namee"></span>
|
||||||
|
<span>NIP</span>
|
||||||
|
<span>:</span>
|
||||||
|
<span class="nipe"></span>
|
||||||
|
<span>Rating</span>
|
||||||
|
<span>:</span>
|
||||||
|
<span><span id="rating"></span></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="tbwrapper" style="position: absolute; width: 100%; overflow: auto; max-height: calc(100% - 6.25em)">
|
||||||
|
<table class="bordered">
|
||||||
|
<colgroup>
|
||||||
|
<col style="min-width: 18ch;">
|
||||||
|
<col style="width: 18ch;">
|
||||||
|
<col style="width: 18ch;">
|
||||||
|
<col style="width: 8ch;">
|
||||||
|
<col style="min-width: 18ch;">
|
||||||
|
<col style="width: 11ch;">
|
||||||
|
<col style="width: 11ch;">
|
||||||
|
<col style="width: 18ch;">
|
||||||
|
<col style="width: 18ch;">
|
||||||
|
<col style="width: 3ch;">
|
||||||
|
</colgroup>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>Inovasi</th>
|
||||||
|
<th>Sasaran</th>
|
||||||
|
<th>Indikator</th>
|
||||||
|
<th>Target</th>
|
||||||
|
<th>Aksi</th>
|
||||||
|
<th>Rencana Mulai</th>
|
||||||
|
<th>Selesai Pada</th>
|
||||||
|
<th>Kendala dan Solusi</th>
|
||||||
|
<th>Catatan Evaluasi</th>
|
||||||
|
<th>★</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody id="evContent">
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div style="display: grid; grid-template-columns: auto auto 1fr auto; gap: .25ch;">
|
||||||
|
<div>
|
||||||
|
<button id="proker">Program Kerja</button>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<button id="renak">Rencana Aksi</button>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<button id="eval">Evaluasi</button>
|
||||||
|
</div>
|
||||||
|
<button id="print"><m-inline>print</m-inline></button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<script type="module">
|
||||||
|
const thisDialog = moly.lastDialog();
|
||||||
|
const data = thisDialog.data;
|
||||||
|
const loadid = moly.loadScreen.show("Menyiapkan Laporan...","dots","#"+µ('[id^="db"]')[0].id);
|
||||||
|
const kegiatanName = [
|
||||||
|
"Sebagai Katalis",
|
||||||
|
"Sebagai Penggerak Perubahan",
|
||||||
|
"Sebagai Pemberi Solusi",
|
||||||
|
"Sebagai Mediator",
|
||||||
|
"Sebagai Penghubung"
|
||||||
|
]
|
||||||
|
const statusName = [
|
||||||
|
"Draft",
|
||||||
|
"Ditolak",
|
||||||
|
"Diajukan",
|
||||||
|
"Berjalan",
|
||||||
|
"Lebih Awal",
|
||||||
|
"Tepat Waktu",
|
||||||
|
"Terlambat",
|
||||||
|
"Tidak Terlaksana"
|
||||||
|
]
|
||||||
|
// console.log(data)
|
||||||
|
function µ(selector)
|
||||||
|
{
|
||||||
|
if (selector) return $(thisDialog.box).find(selector);
|
||||||
|
return $(thisDialog.box);
|
||||||
|
}
|
||||||
|
let units = await getJson("/api/getunits");
|
||||||
|
if(units.status != 200)
|
||||||
|
{
|
||||||
|
moly.loadScreen.update(loadid,"Gagal mengumpulkan data. Harap ulangi beberapa saat lagi.");
|
||||||
|
}
|
||||||
|
units = units.data;
|
||||||
|
data.unitKerja = units.find(u=>u.deplID == data.deplID)?.unitKerja;
|
||||||
|
µ('#proker').click(()=>{
|
||||||
|
µ('.viewer').prop("hidden",true);
|
||||||
|
µ('.viewer').removeClass("print");
|
||||||
|
µ('#vProker').prop("hidden",false);
|
||||||
|
µ('#vProker').addClass("print");
|
||||||
|
µ('.positive').removeClass("positive");
|
||||||
|
µ('#proker').addClass("positive");
|
||||||
|
const printTitle = `Program Kerja Agen Perubahan ${data.name} Tahun ${data.prokers[0].year}`;
|
||||||
|
µ('#print').off("click").click(()=>{
|
||||||
|
const content = µ('.print')[0];
|
||||||
|
if(!content) return;
|
||||||
|
const pw = window.open('', '_blank');
|
||||||
|
pw.document.write(`
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>${printTitle}</title>
|
||||||
|
<link rel="stylesheet" href="/assets/css/fonts.css">
|
||||||
|
<link rel="stylesheet" href="/assets/css/molybdenum.css">
|
||||||
|
<style>
|
||||||
|
@page {
|
||||||
|
margin: 1cm;
|
||||||
|
size: A4 landscape;
|
||||||
|
}
|
||||||
|
body {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
font-size: 10pt !important;
|
||||||
|
}
|
||||||
|
table.bordered, table.bordered th , table.bordered td {
|
||||||
|
border: 1px solid var(--secondary-background);
|
||||||
|
font-size: 10pt !important;
|
||||||
|
}
|
||||||
|
table td {
|
||||||
|
white-space: normal !important;
|
||||||
|
overflow: visible !important;
|
||||||
|
text-overflow: unset !important;
|
||||||
|
}
|
||||||
|
.tbwrapper
|
||||||
|
{
|
||||||
|
overflow: unset !important;
|
||||||
|
max-height: unset !important;
|
||||||
|
}
|
||||||
|
tr {
|
||||||
|
break-inside: avoid;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
${content.innerHTML}
|
||||||
|
<script>
|
||||||
|
requestAnimationFrame(() => {
|
||||||
|
setTimeout(() => {
|
||||||
|
window.print();
|
||||||
|
// window.close();
|
||||||
|
}, 100); // small delay ensures DOM is painted
|
||||||
|
});
|
||||||
|
<\/script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
`);
|
||||||
|
pw.document.close();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
µ('#renak').click(()=>{
|
||||||
|
µ('.viewer').prop("hidden",true);
|
||||||
|
µ('.viewer').removeClass("print");
|
||||||
|
µ('#vRenak').prop("hidden",false);
|
||||||
|
µ('#vRenak').addClass("print");
|
||||||
|
µ('.positive').removeClass("positive");
|
||||||
|
µ('#renak').addClass("positive");
|
||||||
|
const printTitle = `Rencana Aksi Agen Perubahan ${data.name} Tahun ${data.prokers[0].year}`;
|
||||||
|
µ('#print').off("click").click(()=>{
|
||||||
|
const content = µ('.print')[0];
|
||||||
|
if(!content) return;
|
||||||
|
const pw = window.open('', '_blank');
|
||||||
|
pw.document.write(`
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>${printTitle}</title>
|
||||||
|
<link rel="stylesheet" href="/assets/css/fonts.css">
|
||||||
|
<link rel="stylesheet" href="/assets/css/molybdenum.css">
|
||||||
|
<style>
|
||||||
|
@page {
|
||||||
|
margin: 1cm;
|
||||||
|
size: A4 landscape;
|
||||||
|
}
|
||||||
|
body {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
font-size: 10pt !important;
|
||||||
|
}
|
||||||
|
table.bordered, table.bordered th , table.bordered td {
|
||||||
|
border: 1px solid var(--secondary-background);
|
||||||
|
font-size: 10pt !important;
|
||||||
|
}
|
||||||
|
table td {
|
||||||
|
white-space: normal !important;
|
||||||
|
overflow: visible !important;
|
||||||
|
text-overflow: unset !important;
|
||||||
|
}
|
||||||
|
.tbwrapper
|
||||||
|
{
|
||||||
|
overflow: unset !important;
|
||||||
|
max-height: unset !important;
|
||||||
|
}
|
||||||
|
tr {
|
||||||
|
break-inside: avoid;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
${content.innerHTML}
|
||||||
|
<script>
|
||||||
|
requestAnimationFrame(() => {
|
||||||
|
setTimeout(() => {
|
||||||
|
window.print();
|
||||||
|
// window.close();
|
||||||
|
}, 100); // small delay ensures DOM is painted
|
||||||
|
});
|
||||||
|
<\/script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
`);
|
||||||
|
pw.document.close();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
µ('#eval').click(()=>{
|
||||||
|
µ('.viewer').prop("hidden",true);
|
||||||
|
µ('.viewer').removeClass("print");
|
||||||
|
µ('#vEval').prop("hidden",false);
|
||||||
|
µ('#vEval').addClass("print");
|
||||||
|
µ('.positive').removeClass("positive");
|
||||||
|
µ('#eval').addClass("positive");
|
||||||
|
const printTitle = `Hasil Evaluasi Agen Perubahan ${data.name} Tahun ${data.prokers[0].year}`;
|
||||||
|
µ('#print').off("click").click(()=>{
|
||||||
|
const content = µ('.print')[0];
|
||||||
|
if(!content) return;
|
||||||
|
const pw = window.open('', '_blank');
|
||||||
|
pw.document.write(`
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>${printTitle}</title>
|
||||||
|
<link rel="stylesheet" href="/assets/css/fonts.css">
|
||||||
|
<link rel="stylesheet" href="/assets/css/molybdenum.css">
|
||||||
|
<style>
|
||||||
|
@page {
|
||||||
|
margin: 1cm;
|
||||||
|
size: A4 landscape;
|
||||||
|
}
|
||||||
|
body {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
font-size: 10pt !important;
|
||||||
|
}
|
||||||
|
table.bordered, table.bordered th , table.bordered td {
|
||||||
|
border: 1px solid var(--secondary-background);
|
||||||
|
font-size: 10pt !important;
|
||||||
|
}
|
||||||
|
table td {
|
||||||
|
white-space: normal !important;
|
||||||
|
overflow: visible !important;
|
||||||
|
text-overflow: unset !important;
|
||||||
|
}
|
||||||
|
.tbwrapper
|
||||||
|
{
|
||||||
|
overflow: unset !important;
|
||||||
|
max-height: unset !important;
|
||||||
|
}
|
||||||
|
tr {
|
||||||
|
break-inside: avoid;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
${content.innerHTML}
|
||||||
|
<script>
|
||||||
|
requestAnimationFrame(() => {
|
||||||
|
setTimeout(() => {
|
||||||
|
window.print();
|
||||||
|
// window.close();
|
||||||
|
}, 100); // small delay ensures DOM is painted
|
||||||
|
});
|
||||||
|
<\/script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
`);
|
||||||
|
pw.document.close();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
µ('#print').off("click").click(()=>{
|
||||||
|
const content = µ('.print')[0];
|
||||||
|
if(!content) return;
|
||||||
|
const pw = window.open('', '_blank');
|
||||||
|
pw.document.write(`
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>${printTitle}</title>
|
||||||
|
<link rel="stylesheet" href="/assets/css/fonts.css">
|
||||||
|
<link rel="stylesheet" href="/assets/css/molybdenum.css">
|
||||||
|
<style>
|
||||||
|
@page {
|
||||||
|
margin: 1cm;
|
||||||
|
size: A4 landscape;
|
||||||
|
}
|
||||||
|
body {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
font-size: 10pt !important;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
${content.innerHTML}
|
||||||
|
<script>
|
||||||
|
requestAnimationFrame(() => {
|
||||||
|
setTimeout(() => {
|
||||||
|
window.print();
|
||||||
|
// window.close();
|
||||||
|
}, 100); // small delay ensures DOM is painted
|
||||||
|
});
|
||||||
|
<\/script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
`);
|
||||||
|
pw.document.close();
|
||||||
|
});
|
||||||
|
let str = "☆☆☆☆☆";
|
||||||
|
for(let s=1;s<=data.rating;s++)
|
||||||
|
{
|
||||||
|
str = "★" + str;
|
||||||
|
str = str.substring(0,5);
|
||||||
|
}
|
||||||
|
str += ` (${data.rating})`
|
||||||
|
µ('#rating').text(str);
|
||||||
|
µ('.yr').text(data.prokers[0].year);
|
||||||
|
µ('.name').text(data.name);
|
||||||
|
µ('.nip').text(data.agentID);
|
||||||
|
const spv = agents.find(a=>a.agentID == data.prokers[0].journal.find(j=>j.status == 2).submitterID);
|
||||||
|
µ('.names').text(spv.name);
|
||||||
|
µ('.nips').text(spv.agentID);
|
||||||
|
const evd = data.prokers.find(p=>p.evaled)?.journal.find(j=>j.status == 8);
|
||||||
|
µ('#eval').prop("disabled", (!evd));
|
||||||
|
const evr = agents.find(a=>a.agentID == evd?.submitterID);
|
||||||
|
µ('.namee').text(evr?.name);
|
||||||
|
µ('.nipe').text(evr?.agentID);
|
||||||
|
µ('.uk').text(data.unitKerja);
|
||||||
|
µ('.uk').text(data.unitKerja);
|
||||||
|
function populateReport()
|
||||||
|
{
|
||||||
|
µ('#pkContent').empty();
|
||||||
|
µ('#raContent').empty();
|
||||||
|
µ('#evContent').empty();
|
||||||
|
$.each(data.prokers,(i,v)=>{
|
||||||
|
const ro = moly.newElement("tr");
|
||||||
|
const no = moly.newElement("td");
|
||||||
|
const kg = moly.newElement("td");
|
||||||
|
const ss = moly.newElement("td");
|
||||||
|
const tg = moly.newElement("td");
|
||||||
|
const st = moly.newElement("td");
|
||||||
|
ro.append(no);
|
||||||
|
ro.append(kg);
|
||||||
|
ro.append(ss);
|
||||||
|
ro.append(tg);
|
||||||
|
ro.append(st);
|
||||||
|
no.style.textAlign
|
||||||
|
= "right";
|
||||||
|
tg.style.textAlign
|
||||||
|
= "center";
|
||||||
|
no.append((i+1)+".");
|
||||||
|
kg.append(kegiatanName[v.kegiatan]);
|
||||||
|
ss.append(v.sasaran);
|
||||||
|
tg.append(`${v.timeTarget} ${v.isInMonth ? "Bulan" : "Hari"}`);
|
||||||
|
// st.append(((v.startDay == null ? "" : v.startDay.toString().padStart(2,"0") + " ") + monthName[v.startMonth] + " " + v.year));
|
||||||
|
st.append((v.year+"/"+v.startMonth.toString().padStart(2,"0")) + (!v.isInMonth ? ("/"+v.startDay.toString().padStart(2,"0")) : ""));
|
||||||
|
µ('#pkContent').append(ro);
|
||||||
|
const rro = moly.newElement("tr");
|
||||||
|
const rno = moly.newElement("td");
|
||||||
|
const inv = moly.newElement("td");
|
||||||
|
const ssr = moly.newElement("td");
|
||||||
|
const ind = moly.newElement("td");
|
||||||
|
const tgt = moly.newElement("td");
|
||||||
|
const act = moly.newElement("td");
|
||||||
|
const str = moly.newElement("td");
|
||||||
|
const end = moly.newElement("td");
|
||||||
|
rro.append(rno);
|
||||||
|
rro.append(inv);
|
||||||
|
rro.append(ssr);
|
||||||
|
rro.append(ind);
|
||||||
|
rro.append(tgt);
|
||||||
|
rro.append(act);
|
||||||
|
rro.append(str);
|
||||||
|
rro.append(end);
|
||||||
|
rno.style.textAlign
|
||||||
|
="right";
|
||||||
|
tgt.style.textAlign
|
||||||
|
="center";
|
||||||
|
rno.append((i+1)+".");
|
||||||
|
inv.append(v.sasaran);
|
||||||
|
ssr.append(v.entityTarget);
|
||||||
|
ind.append(v.indicators);
|
||||||
|
tgt.append(`${v.timeTarget} ${v.isInMonth ? "Bulan" : "Hari"}`);
|
||||||
|
act.append(v.actions);
|
||||||
|
// str.append(((v.startDay == null ? "" : v.startDay.toString().padStart(2,"0") + " ") + monthName[v.startMonth] + " " + v.year));
|
||||||
|
str.append((v.year+"/"+v.startMonth.toString().padStart(2,"0")) + (!v.isInMonth ? ("/"+v.startDay.toString().padStart(2,"0")) : ""));
|
||||||
|
end.append(!v.completed ? "Belum" : v.journal.find(j=>j.status == 4).timeStamp.replaceAll("-","/").substring(0,10))
|
||||||
|
µ('#raContent').append(rro);
|
||||||
|
// if(!evd) return;
|
||||||
|
const ero = moly.newElement("tr");
|
||||||
|
const env = moly.newElement("td");
|
||||||
|
const ess = moly.newElement("td");
|
||||||
|
const ein = moly.newElement("td");
|
||||||
|
const etg = moly.newElement("td");
|
||||||
|
const eac = moly.newElement("td");
|
||||||
|
const est = moly.newElement("td");
|
||||||
|
const edn = moly.newElement("td");
|
||||||
|
const eks = moly.newElement("td");
|
||||||
|
const ems = moly.newElement("td");
|
||||||
|
const ert = moly.newElement("td");
|
||||||
|
ero.append(env);
|
||||||
|
ero.append(ess);
|
||||||
|
ero.append(ein);
|
||||||
|
ero.append(etg);
|
||||||
|
ero.append(eac);
|
||||||
|
ero.append(est);
|
||||||
|
ero.append(edn);
|
||||||
|
ero.append(eks);
|
||||||
|
ero.append(ems);
|
||||||
|
ero.append(ert);
|
||||||
|
// <th>Inovasi</th>
|
||||||
|
// <th>Sasaran</th>
|
||||||
|
// <th>Indikator</th>
|
||||||
|
// <th>Target</th>
|
||||||
|
// <th>Aksi</th>
|
||||||
|
// <th>Rencana Mulai</th>
|
||||||
|
// <th>Selesai Pada</th>
|
||||||
|
// <th>Kendala dan Solusi</th>
|
||||||
|
// <th>Catatan Evaluasi</th>
|
||||||
|
// <th>★</th>
|
||||||
|
//evContent
|
||||||
|
env.append(v.sasaran);
|
||||||
|
ess.append(v.entityTarget);
|
||||||
|
ein.append(v.indicators);
|
||||||
|
etg.append(`${v.timeTarget} ${v.isInMonth ? "Bulan" : "Hari"}`);
|
||||||
|
eac.append(v.actions);
|
||||||
|
est.append((v.year+"/"+v.startMonth.toString().padStart(2,"0")) + (!v.isInMonth ? ("/"+v.startDay.toString().padStart(2,"0")) : ""));
|
||||||
|
edn.append(!v.completed ? "(Belum Selesai)" : v.journal.find(j=>j.status == 4).timeStamp.replaceAll("-","/").substring(0,10));
|
||||||
|
const done = v.completed ? v.journal.find(j=>j.status == 4) : {};
|
||||||
|
const ks = v.completed ? JSON.parse(done.notes) : {}
|
||||||
|
const ksstr = v.completed ? (
|
||||||
|
`Kendala:
|
||||||
|
${(ks.kendala.length > 0 ? ks.kendala : "-")}
|
||||||
|
Solusi:
|
||||||
|
${(ks.solusi.length > 0 ? ks.solusi : "-")}`
|
||||||
|
) : "(Belum Selesai)"
|
||||||
|
eks.append(ksstr);
|
||||||
|
eks.style.setProperty("white-space", "pre-line", "important");
|
||||||
|
const evalj = v.evaled ? v.journal.find(j=>j.status == 8) : {};
|
||||||
|
const ev = v.evaled ? JSON.parse(evalj.notes) : {m:"(Belum Evaluasi)",r:0}
|
||||||
|
ems.append(ev.m);
|
||||||
|
ert.append(ev.r);
|
||||||
|
µ('#evContent').append(ero);
|
||||||
|
})
|
||||||
|
}
|
||||||
|
populateReport();
|
||||||
|
µ('#proker').click();
|
||||||
|
if (!units.status) moly.loadScreen.close(loadid);
|
||||||
|
</script>
|
@ -1,3 +1,176 @@
|
|||||||
<div style="text-align: center;">
|
<div style="text-align: center; font-weight: 600; margin: .8em 0; font-size: 1.1em;">
|
||||||
Belum Cukup Data
|
Laporan Aksi Perubahan<br>
|
||||||
</div>
|
<span id="uk"></span>
|
||||||
|
</div>
|
||||||
|
<div style="margin: 0 2ch;">
|
||||||
|
Tahun
|
||||||
|
<select id="pkYear" style="width: max-content;">
|
||||||
|
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<div style="max-height: calc(78vh - 6em); overflow: auto; margin: 0 0 1em 0; padding: 0 2ch 2ch 2ch;" id="agWrapper">
|
||||||
|
<table id="agents" class="bordered selectable">
|
||||||
|
<colgroup>
|
||||||
|
<col style="width: 4ch;">
|
||||||
|
<col style="width: 22ch;">
|
||||||
|
<col style="min-width: 20ch;">
|
||||||
|
<col style="width: 9ch;">
|
||||||
|
</colgroup>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>No</th>
|
||||||
|
<th>NIP</th>
|
||||||
|
<th>Nama Agen</th>
|
||||||
|
<th>Rating Kinerja</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody id="agEmpty">
|
||||||
|
<tr>
|
||||||
|
<td colspan="4" style="text-align: center;">
|
||||||
|
Data Kosong
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
<tbody id="agContent" hidden>
|
||||||
|
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<script type="module">
|
||||||
|
window.prokers = [];
|
||||||
|
async function getProkers()
|
||||||
|
{
|
||||||
|
const loadid = moly.loadScreen.show("Memuat data...","bar","#agWrapper");
|
||||||
|
const getprokers = await getJson("/api/getprokers");
|
||||||
|
if (getprokers.status != 200)
|
||||||
|
{
|
||||||
|
moly.alert.show("Gagal Memuat Data","Data Program Kerja tidak berhasil dimuat. Silakan ulangi kembali beberapa saat lagi.");
|
||||||
|
moly.loadScreen.close(loadid);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
let years = [];
|
||||||
|
prokers = getprokers.data.reduce((a,v)=>{
|
||||||
|
const aindex = a.findIndex(e=>e.prokerID == v.prokerID);
|
||||||
|
if(!years.includes(v.year))
|
||||||
|
{
|
||||||
|
years.push(v.year);
|
||||||
|
const opt = moly.newElement("option");
|
||||||
|
opt.value = v.year;
|
||||||
|
opt.append(v.year);
|
||||||
|
$('#pkYear').append(opt);
|
||||||
|
}
|
||||||
|
if(aindex >=0)
|
||||||
|
{
|
||||||
|
a[aindex].journal.push({
|
||||||
|
journalID: v.journalID,
|
||||||
|
submitterID: v.submitterID,
|
||||||
|
notes: v.notes,
|
||||||
|
status: v.status,
|
||||||
|
document: v.document,
|
||||||
|
timeStamp: v.timeStamp.replace("T"," ")
|
||||||
|
})
|
||||||
|
a[aindex].journal.sort((ja,jb)=>ja.journalID.localeCompare(jb.journalID));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
const nv = JSON.parse(JSON.stringify(v));
|
||||||
|
nv.journal= [{
|
||||||
|
journalID: v.journalID,
|
||||||
|
submitterID: v.submitterID,
|
||||||
|
notes: v.notes,
|
||||||
|
status: v.status,
|
||||||
|
document: v.document,
|
||||||
|
timeStamp: v.timeStamp.replace("T"," ")
|
||||||
|
}]
|
||||||
|
const owner = agents.find(e=> e.agentID == v.ownerID)
|
||||||
|
if (owner)
|
||||||
|
{
|
||||||
|
nv.owner = owner
|
||||||
|
delete nv.ownerID
|
||||||
|
}
|
||||||
|
delete nv.journalID;
|
||||||
|
delete nv.submitterID;
|
||||||
|
delete nv.notes;
|
||||||
|
delete nv.status;
|
||||||
|
delete nv.document;
|
||||||
|
delete nv.timeStamp;
|
||||||
|
a.push(nv);
|
||||||
|
}
|
||||||
|
return a;
|
||||||
|
},[]).filter(p=>p.owner); //filter untested!
|
||||||
|
//============AGENTS TABLE FILLING STARTS HERE======================
|
||||||
|
$('#agContent').empty();
|
||||||
|
const users = await getJson("/api/getusers");
|
||||||
|
if(users.status != 200)
|
||||||
|
{
|
||||||
|
moly.alert.show("Gagal Memuat Data","Data pengguna tidak berhasil dimuat. Silakan ulangi kembali beberapa saat lagi.")
|
||||||
|
moly.loadScreen.close(loadid);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
let num = 1;
|
||||||
|
const repAgents = JSON.parse(JSON.stringify(agents))
|
||||||
|
$.each(repAgents,(_,v)=>{
|
||||||
|
if (users.data.find(u=>u.agentID == v.agentID).level != 3) return;
|
||||||
|
v.prokers = prokers.filter(p=>p.owner.agentID == v.agentID);
|
||||||
|
delete v.owner;
|
||||||
|
if(v.prokers.length<=0)
|
||||||
|
{
|
||||||
|
v.approved = false;
|
||||||
|
v.rating = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
v.approved = v.prokers[0].journal.at(-1).status >= 3
|
||||||
|
v.rating = 0;
|
||||||
|
$.each(v.prokers,(_,y)=>{
|
||||||
|
y.completed = y.journal.at(-1).status >= 4;
|
||||||
|
y.evaled = y.journal.at(-1).status == 8;
|
||||||
|
y.rating = y.evaled ? JSON.parse(y.journal.at(-1).notes).r : 0;
|
||||||
|
v.rating += y.rating;
|
||||||
|
});
|
||||||
|
v.completed = v.prokers.every(p=>p.completed);
|
||||||
|
v.evaled = v.prokers.every(p=>p.evaled);
|
||||||
|
v.rating = Number((v.rating / v.prokers.length).toFixed(2));
|
||||||
|
}
|
||||||
|
//====EXPAND LATER. WON'T WORK WELL LIKE THIS
|
||||||
|
const ro = moly.newElement("tr");
|
||||||
|
const no = moly.newElement("td");
|
||||||
|
const ni = moly.newElement("td");
|
||||||
|
const na = moly.newElement("td");
|
||||||
|
const ra = moly.newElement("td");
|
||||||
|
ro.append(no);
|
||||||
|
ro.append(ni);
|
||||||
|
ro.append(na);
|
||||||
|
ro.append(ra);
|
||||||
|
no.append(num + ".");
|
||||||
|
num++;
|
||||||
|
no.style.textAlign = "right";
|
||||||
|
ni.append(v.agentID);
|
||||||
|
ni.style.textAlign
|
||||||
|
= ra.style.textAlign
|
||||||
|
= "center";
|
||||||
|
na.append(v.name);
|
||||||
|
$(ro).click(async()=>{
|
||||||
|
if(!v.approved)
|
||||||
|
{
|
||||||
|
moly.alert.show("Belum Ada Program Kerja",`Agen ${v.name} belum memiliki program kerja yang disetujui.`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
await moly.dialog.show({title:"Laporan Kerja Agen Perubahan "+v.name, content:"/modules/laporan-view.html",fetching:true, data: v});
|
||||||
|
});
|
||||||
|
ra.append(v.rating);
|
||||||
|
$('#agContent').append(ro);
|
||||||
|
})
|
||||||
|
$('#agEmpty').prop("hidden",repAgents.length > 0);
|
||||||
|
$('#agContent').prop("hidden",repAgents.length < 1);
|
||||||
|
moly.loadScreen.close(loadid);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
function µ(selector)
|
||||||
|
{
|
||||||
|
if (selector) return $('body>#main>#content').find(selector);
|
||||||
|
return $('body>#main>#content');
|
||||||
|
}
|
||||||
|
µ('#uk').text(userDetails.info.unitKerja);
|
||||||
|
await getProkers();
|
||||||
|
</script>
|
@ -108,17 +108,33 @@
|
|||||||
const ks = JSON.parse(v.notes);
|
const ks = JSON.parse(v.notes);
|
||||||
no.append("Kendala:");
|
no.append("Kendala:");
|
||||||
no.append(moly.newElement("br"));
|
no.append(moly.newElement("br"));
|
||||||
no.append(ks.kendala.length > 1? ks.kendala : "-");
|
no.append(ks.kendala.length > 1? ks.kendala : "(Tidak ada)");
|
||||||
no.append(moly.newElement("br"));
|
no.append(moly.newElement("br"));
|
||||||
no.append("Solusi:");
|
no.append("Solusi:");
|
||||||
no.append(moly.newElement("br"));
|
no.append(moly.newElement("br"));
|
||||||
no.append(ks.solusi.length > 1? ks.solusi : "-");
|
no.append(ks.solusi.length > 1? ks.solusi : "(Tidak ada)");
|
||||||
|
}
|
||||||
|
else if(v.status ==8)
|
||||||
|
{
|
||||||
|
const rm = JSON.parse(v.notes);
|
||||||
|
no.append("Nilai: ");
|
||||||
|
let str = "☆☆☆☆☆";
|
||||||
|
for(let s=1;s<=rm.r;s++)
|
||||||
|
{
|
||||||
|
str = "★" + str;
|
||||||
|
str = str.substring(0,5);
|
||||||
|
}
|
||||||
|
no.append(str);
|
||||||
|
no.append(moly.newElement("br"));
|
||||||
|
no.append("Catatan: ");
|
||||||
|
no.append(moly.newElement("br"));
|
||||||
|
no.append(rm.m.length > 1? rm.m : "(Tidak ada)");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
no.append("Catatan:");
|
no.append("Catatan:");
|
||||||
no.append(moly.newElement("br"));
|
no.append(moly.newElement("br"));
|
||||||
no.append(v.notes.length > 1? v.notes : "-");
|
no.append(v.notes.length > 1? v.notes : "(Tidak ada)");
|
||||||
}
|
}
|
||||||
// console.log(typeof v.document)
|
// console.log(typeof v.document)
|
||||||
if(typeof v.document === "string")
|
if(typeof v.document === "string")
|
||||||
|
@ -1,14 +1,14 @@
|
|||||||
|
|
||||||
<div style="display: grid; grid-template-columns: auto 1fr; column-gap: 1ch; height: 80vh;">
|
<div style="display: grid; grid-template-columns: auto 1fr; column-gap: 1ch; height: calc(80vh - 1em);">
|
||||||
<div>
|
<div>
|
||||||
<div>Dokumen Eviden:</div>
|
<div>Dokumen Eviden:</div>
|
||||||
<iframe style="width: 68vw; height: calc(83vh - 3.5em); width: calc(88vw - 38ch)">
|
<iframe style="width: 68vw; height: calc(80vh - 2.8em); width: calc(88vw - 38ch)">
|
||||||
|
|
||||||
</iframe>
|
</iframe>
|
||||||
</div>
|
</div>
|
||||||
<div style="display: grid; grid-template-columns: auto 1fr; column-gap: 1ch; width: 35ch; grid-auto-rows: min-content;">
|
<div style="display: grid; grid-template-columns: auto 1fr; column-gap: 1ch; width: 35ch; grid-auto-rows: min-content;">
|
||||||
<span style="grid-column: span 2;">Aksi Perubahan</span>
|
<span style="grid-column: span 2;">Aksi Perubahan:</span>
|
||||||
<textarea id="act" style="grid-column: span 2; width: 35ch; height: 5em; resize: none;" readonly></textarea>
|
<textarea id="act" style="grid-column: span 2; width: 35ch; height: 4em; resize: none;" readonly></textarea>
|
||||||
Rencana Mulai <span id="planStart"></span>
|
Rencana Mulai <span id="planStart"></span>
|
||||||
Rencana Durasi <span id="planDur"></span>
|
Rencana Durasi <span id="planDur"></span>
|
||||||
Selesai Pada <span id="finishedAt"></span>
|
Selesai Pada <span id="finishedAt"></span>
|
||||||
@ -16,15 +16,19 @@
|
|||||||
<span style="grid-column: span 2;">
|
<span style="grid-column: span 2;">
|
||||||
Kendala:
|
Kendala:
|
||||||
</span>
|
</span>
|
||||||
<textarea id="pro" style="grid-column: span 2; width: 35ch; height: 5em; resize: none;" placeholder="(Tidak ada kendala)" readonly></textarea>
|
<textarea id="pro" style="grid-column: span 2; width: 35ch; height: 4em; resize: none;" placeholder="(Tidak ada kendala)" readonly></textarea>
|
||||||
<span style="grid-column: span 2;">
|
<span style="grid-column: span 2;">
|
||||||
Solusi:
|
Solusi:
|
||||||
</span>
|
</span>
|
||||||
<textarea id="sol" style="grid-column: span 2; width: 35ch; height: 5em; resize: none;" placeholder="(Tidak ada solusi)" readonly></textarea>
|
<textarea id="sol" style="grid-column: span 2; width: 35ch; height: 4em; resize: none;" placeholder="(Tidak ada solusi)" readonly></textarea>
|
||||||
|
<span style="grid-column: span 2;">
|
||||||
|
Nilai: <span id="nilai"></span>
|
||||||
|
</span>
|
||||||
|
<input style="grid-column: span 2;" type="range" id="rating" min="1" max="5" value="4">
|
||||||
<span style="grid-column: span 2;">
|
<span style="grid-column: span 2;">
|
||||||
Catatan Evaluasi:
|
Catatan Evaluasi:
|
||||||
</span>
|
</span>
|
||||||
<textarea id="evalnotes" style="grid-column: span 2; width: 35ch; height: 5em; resize: none;" placeholder="Contoh: Bagus, harap pertahankan kinerja saudara."></textarea>
|
<textarea id="evalnotes" style="grid-column: span 2; width: 35ch; height: 4em; resize: none;" placeholder="Catatan atas kinerja atau solusi dari kendala yang dihadapi agen." maxlength="490"></textarea>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div style="text-align: right;">
|
<div style="text-align: right;">
|
||||||
@ -40,10 +44,16 @@
|
|||||||
}
|
}
|
||||||
const finJour = data.journal.find(e=>e.status == 4);
|
const finJour = data.journal.find(e=>e.status == 4);
|
||||||
const prosol = JSON.parse(finJour.notes);
|
const prosol = JSON.parse(finJour.notes);
|
||||||
console.log(data)
|
|
||||||
µ('#act').val(data.actions);
|
µ('#act').val(data.actions);
|
||||||
µ('#pro').val(prosol.kendala);
|
µ('#pro').val(prosol.kendala);
|
||||||
µ('#sol').val(prosol.solusi);
|
µ('#sol').val(prosol.solusi);
|
||||||
|
// let str = "☆☆☆☆☆";
|
||||||
|
// for(let s=1;s<=Number(µ('#rating').val());s++)
|
||||||
|
// {
|
||||||
|
// str = "★" + str;
|
||||||
|
// str = str.substring(0,5);
|
||||||
|
// }
|
||||||
|
// µ('#nilai').text(str);
|
||||||
µ('#planStart').text(data.year + "-" + data.startMonth.toString().padStart(2,"0")+ (data.isInMonth ? "" : "-" + data.startDay.toString().padStart(2,"0")));
|
µ('#planStart').text(data.year + "-" + data.startMonth.toString().padStart(2,"0")+ (data.isInMonth ? "" : "-" + data.startDay.toString().padStart(2,"0")));
|
||||||
µ('#planDur').text(data.timeTarget + " " + (data.isInMonth ? "Bulan" : "Hari"));
|
µ('#planDur').text(data.timeTarget + " " + (data.isInMonth ? "Bulan" : "Hari"));
|
||||||
µ('#finishedAt').text(finJour.timeStamp.substring(0,16));
|
µ('#finishedAt').text(finJour.timeStamp.substring(0,16));
|
||||||
@ -51,7 +61,13 @@
|
|||||||
µ('iframe')[0].src="/uploads/dokumen/" + finJour.document;
|
µ('iframe')[0].src="/uploads/dokumen/" + finJour.document;
|
||||||
µ('#submit').click(async()=>{
|
µ('#submit').click(async()=>{
|
||||||
const loadid = moly.loadScreen.show("Mengirim Evaluasi...","sonar","#"+µ('div[id^="db"]')[0].id)
|
const loadid = moly.loadScreen.show("Mengirim Evaluasi...","sonar","#"+µ('div[id^="db"]')[0].id)
|
||||||
const evalres = await postJson('/api/eval', {prokerid: data.prokerID, notes: µ('#evalnotes').val().length > 0 ? µ('#evalnotes').val(): "-"});
|
const notes = JSON.stringify(
|
||||||
|
{
|
||||||
|
r: Number(µ('#rating').val()),
|
||||||
|
m: (µ('#evalnotes').val().length > 0 ? µ('#evalnotes').val(): "(Tidak ada)")
|
||||||
|
}
|
||||||
|
)
|
||||||
|
const evalres = await postJson('/api/eval', {prokerid: data.prokerID, notes});
|
||||||
if(evalres.status != 201)
|
if(evalres.status != 201)
|
||||||
{
|
{
|
||||||
moly.alert.show("Pengiriman Evaluaasi Gagal","Tidak dapat mengirim evaluasi. Silakan ulangi kembali beberapa saat lagi.");
|
moly.alert.show("Pengiriman Evaluaasi Gagal","Tidak dapat mengirim evaluasi. Silakan ulangi kembali beberapa saat lagi.");
|
||||||
@ -61,4 +77,14 @@
|
|||||||
moly.loadScreen.close(loadid);
|
moly.loadScreen.close(loadid);
|
||||||
thisDialog.resolve(true);
|
thisDialog.resolve(true);
|
||||||
});
|
});
|
||||||
|
µ('#rating').change(()=>{
|
||||||
|
let str = "☆☆☆☆☆";
|
||||||
|
for(let s=1;s<=Number(µ('#rating').val());s++)
|
||||||
|
{
|
||||||
|
str = "★" + str;
|
||||||
|
str = str.substring(0,5);
|
||||||
|
}
|
||||||
|
µ('#nilai').text(str);
|
||||||
|
});
|
||||||
|
µ('#rating').change();
|
||||||
</script>
|
</script>
|
@ -3,7 +3,7 @@
|
|||||||
Daftar Agen Perubahan<br>
|
Daftar Agen Perubahan<br>
|
||||||
<span id="uk"></span>
|
<span id="uk"></span>
|
||||||
</div>
|
</div>
|
||||||
<div style="max-height: calc(50vh - 6em); overflow-y: scroll; margin: 0 0 1em 0; padding: 0 2ch 2ch 2ch;" id="agWrapper">
|
<div style="max-height: calc(70vh - 6em); overflow: auto; margin: 0 0 1em 0; padding: 0 2ch 2ch 2ch;" id="agWrapper">
|
||||||
<table id="agents" class="bordered selectable">
|
<table id="agents" class="bordered selectable">
|
||||||
<colgroup>
|
<colgroup>
|
||||||
<col style="width: 4ch;">
|
<col style="width: 4ch;">
|
||||||
@ -43,12 +43,12 @@
|
|||||||
</span>
|
</span>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div style="max-height: calc(50vh - 6em); overflow-y: scroll; margin: 0 0 1em 0; padding: 0 2ch 2ch 2ch;" id="pkWrapper">
|
<div style="max-height: calc(68vh - 6em); overflow: auto; margin: 0 0 1em 0; padding: 0 2ch 2ch 2ch;" id="pkWrapper">
|
||||||
<table id="proker" class="bordered selectable">
|
<table id="proker" class="bordered selectable">
|
||||||
<colgroup>
|
<colgroup>
|
||||||
<col style="width: 4ch;">
|
<col style="width: 4ch;">
|
||||||
<col style="width: 27ch;">
|
<col style="width: 27ch;">
|
||||||
<col>
|
<col style="min-width: 12ch;">
|
||||||
<col style="width: 8ch;">
|
<col style="width: 8ch;">
|
||||||
<col style="width: 17ch;">
|
<col style="width: 17ch;">
|
||||||
<col style="width: 16ch;">
|
<col style="width: 16ch;">
|
||||||
@ -208,6 +208,7 @@
|
|||||||
no.style.textAlign = "right";
|
no.style.textAlign = "right";
|
||||||
kg.append(kegiatanName[v.kegiatan]);
|
kg.append(kegiatanName[v.kegiatan]);
|
||||||
ss.append(v.sasaran);
|
ss.append(v.sasaran);
|
||||||
|
ss.setAttribute("title",v.sasaran);
|
||||||
tw.append(`${v.timeTarget} ${v.isInMonth ? "Bulan" : "Hari"}`);
|
tw.append(`${v.timeTarget} ${v.isInMonth ? "Bulan" : "Hari"}`);
|
||||||
tw.style.textAlign = "center";
|
tw.style.textAlign = "center";
|
||||||
wm.append(((v.startDay == null ? "" : v.startDay.toString().padStart(2,"0") + " ") + monthName[v.startMonth] + " " + v.year));
|
wm.append(((v.startDay == null ? "" : v.startDay.toString().padStart(2,"0") + " ") + monthName[v.startMonth] + " " + v.year));
|
||||||
@ -236,11 +237,20 @@
|
|||||||
$('#proker #pkContent').append(ro);
|
$('#proker #pkContent').append(ro);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
function fillAgents()
|
async function fillAgents()
|
||||||
{
|
{
|
||||||
const loadid = moly.loadScreen.show("Memuat data agen...","bar","#agWrapper");
|
const loadid = moly.loadScreen.show("Memuat data agen...","bar","#agWrapper");
|
||||||
$('#agContent').empty();
|
$('#agContent').empty();
|
||||||
$.each(agents.filter(a=>a.agentID != userDetails.info.agentID),(i,v)=>{
|
const users = await getJson("/api/getusers");
|
||||||
|
if(users.status != 200)
|
||||||
|
{
|
||||||
|
moly.alert.show("Gagal Memuat Data","Data pengguna tidak berhasil dimuat. Silakan ulangi kembali beberapa saat lagi.")
|
||||||
|
moly.loadScreen.close(loadid);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
let num = 1;
|
||||||
|
$.each(agents,(_,v)=>{
|
||||||
|
if (users.data.find(u=>u.agentID == v.agentID).level != 3) return;
|
||||||
const ro = moly.newElement("tr");
|
const ro = moly.newElement("tr");
|
||||||
const no = moly.newElement("td");
|
const no = moly.newElement("td");
|
||||||
const ni = moly.newElement("td");
|
const ni = moly.newElement("td");
|
||||||
@ -248,7 +258,8 @@
|
|||||||
ro.append(no)
|
ro.append(no)
|
||||||
ro.append(ni)
|
ro.append(ni)
|
||||||
ro.append(na)
|
ro.append(na)
|
||||||
no.append((i+1) + ".");
|
no.append(num + ".");
|
||||||
|
num++;
|
||||||
no.style.textAlign = "right";
|
no.style.textAlign = "right";
|
||||||
ni.append(v.agentID);
|
ni.append(v.agentID);
|
||||||
ni.style.textAlign = "center";
|
ni.style.textAlign = "center";
|
||||||
|
@ -1,8 +1,12 @@
|
|||||||
<div style="max-height: calc(50vh - 6em); overflow-y: scroll; margin: 0 0 1em 0; padding: 0 2ch 2ch 2ch;" id="rgWrapper">
|
<div style="text-align: center; font-weight: 600; margin: .8em 0; font-size: 1.1em;">
|
||||||
|
Daftar Dokumen Regulasi
|
||||||
|
</div>
|
||||||
|
<a-button id="newReg" style="margin: 0 2ch;">Entri Regulasi Baru</a-button>
|
||||||
|
<div style="max-height: calc(83vh - 6em); overflow: auto; margin: 0 0 1em 0; padding: 0 2ch 2ch 2ch;" id="rgWrapper">
|
||||||
<table id="regs" class="bordered selectable">
|
<table id="regs" class="bordered selectable">
|
||||||
<colgroup>
|
<colgroup>
|
||||||
<col style="width: 25ch;">
|
<col style="width: 25ch;">
|
||||||
<col>
|
<col style="min-width: 10ch;">
|
||||||
<col style="width: 20ch;">
|
<col style="width: 20ch;">
|
||||||
<col style="width: 19ch;">
|
<col style="width: 19ch;">
|
||||||
</colgroup>
|
</colgroup>
|
||||||
@ -23,7 +27,6 @@
|
|||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
<a-button id="newReg">Entri Regulasi</a-button>
|
|
||||||
<script type="module">
|
<script type="module">
|
||||||
let regulations = [];
|
let regulations = [];
|
||||||
async function getRegs()
|
async function getRegs()
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
Daftar Agen Perubahan<br>
|
Daftar Agen Perubahan<br>
|
||||||
<span id="uk"></span>
|
<span id="uk"></span>
|
||||||
</div>
|
</div>
|
||||||
<div style="max-height: calc(50vh - 6em); overflow-y: scroll; margin: 0 0 1em 0; padding: 0 2ch 2ch 2ch;" id="agWrapper">
|
<div style="max-height: calc(70vh - 6em); overflow: auto; margin: 0 0 1em 0; padding: 0 2ch 2ch 2ch;" id="agWrapper">
|
||||||
<table id="agents" class="bordered selectable">
|
<table id="agents" class="bordered selectable">
|
||||||
<colgroup>
|
<colgroup>
|
||||||
<col style="width: 4ch;">
|
<col style="width: 4ch;">
|
||||||
@ -43,12 +43,12 @@
|
|||||||
</span>
|
</span>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div style="max-height: calc(50vh - 6em); overflow-y: scroll; margin: 0 0 1em 0; padding: 0 2ch 2ch 2ch;" id="pkWrapper">
|
<div style="max-height: calc(68vh - 6em); overflow: auto; margin: 0 0 1em 0; padding: 0 2ch 2ch 2ch;" id="pkWrapper">
|
||||||
<table id="proker" class="bordered selectable">
|
<table id="proker" class="bordered selectable">
|
||||||
<colgroup>
|
<colgroup>
|
||||||
<col style="width: 4ch;">
|
<col style="width: 4ch;">
|
||||||
<col style="width: 19ch;">
|
<col style="width: 27ch;">
|
||||||
<col>
|
<col style="min-width: 12ch;">
|
||||||
<col style="width: 8ch;">
|
<col style="width: 8ch;">
|
||||||
<col style="width: 17ch;">
|
<col style="width: 17ch;">
|
||||||
<col style="width: 16ch;">
|
<col style="width: 16ch;">
|
||||||
@ -204,6 +204,7 @@
|
|||||||
no.style.textAlign = "right";
|
no.style.textAlign = "right";
|
||||||
kg.append(kegiatanName[v.kegiatan]);
|
kg.append(kegiatanName[v.kegiatan]);
|
||||||
ss.append(v.sasaran);
|
ss.append(v.sasaran);
|
||||||
|
ss.setAttribute("title",v.sasaran);
|
||||||
tw.append(`${v.timeTarget} ${v.isInMonth ? "Bulan" : "Hari"}`);
|
tw.append(`${v.timeTarget} ${v.isInMonth ? "Bulan" : "Hari"}`);
|
||||||
tw.style.textAlign = "center";
|
tw.style.textAlign = "center";
|
||||||
wm.append(((v.startDay == null ? "" : v.startDay.toString().padStart(2,"0") + " ") + monthName[v.startMonth] + " " + v.year));
|
wm.append(((v.startDay == null ? "" : v.startDay.toString().padStart(2,"0") + " ") + monthName[v.startMonth] + " " + v.year));
|
||||||
@ -227,11 +228,20 @@
|
|||||||
$('#proker #pkContent').append(ro);
|
$('#proker #pkContent').append(ro);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
function fillAgents()
|
async function fillAgents()
|
||||||
{
|
{
|
||||||
const loadid = moly.loadScreen.show("Memuat data agen...","bar","#agWrapper");
|
const loadid = moly.loadScreen.show("Memuat data agen...","bar","#agWrapper");
|
||||||
$('#agContent').empty();
|
$('#agContent').empty();
|
||||||
$.each(agents.filter(a=>a.agentID != userDetails.info.agentID),(i,v)=>{
|
const users = await getJson("/api/getusers");
|
||||||
|
if(users.status != 200)
|
||||||
|
{
|
||||||
|
moly.alert.show("Gagal Memuat Data","Data pengguna tidak berhasil dimuat. Silakan ulangi kembali beberapa saat lagi.")
|
||||||
|
moly.loadScreen.close(loadid);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
let num = 1;
|
||||||
|
$.each(agents,(_,v)=>{
|
||||||
|
if (users.data.find(u=>u.agentID == v.agentID).level != 3) return;
|
||||||
const ro = moly.newElement("tr");
|
const ro = moly.newElement("tr");
|
||||||
const no = moly.newElement("td");
|
const no = moly.newElement("td");
|
||||||
const ni = moly.newElement("td");
|
const ni = moly.newElement("td");
|
||||||
@ -239,7 +249,8 @@
|
|||||||
ro.append(no)
|
ro.append(no)
|
||||||
ro.append(ni)
|
ro.append(ni)
|
||||||
ro.append(na)
|
ro.append(na)
|
||||||
no.append((i+1) + ".");
|
no.append(num + ".");
|
||||||
|
num++;
|
||||||
no.style.textAlign = "right";
|
no.style.textAlign = "right";
|
||||||
ni.append(v.agentID);
|
ni.append(v.agentID);
|
||||||
ni.style.textAlign = "center";
|
ni.style.textAlign = "center";
|
||||||
|
Loading…
x
Reference in New Issue
Block a user