agper-agen/modules/monev-eval.html

90 lines
3.9 KiB
HTML

<div style="display: grid; grid-template-columns: auto 1fr; column-gap: 1ch; height: calc(80vh - 1em);">
<div>
<div>Dokumen Eviden:</div>
<iframe style="width: 68vw; height: calc(80vh - 2.8em); width: calc(88vw - 38ch)">
</iframe>
</div>
<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>
<textarea id="act" style="grid-column: span 2; width: 35ch; height: 4em; resize: none;" readonly></textarea>
Rencana&nbsp;Mulai <span id="planStart"></span>
Rencana&nbsp;Durasi <span id="planDur"></span>
Selesai&nbsp;Pada <span id="finishedAt"></span>
Status&nbsp;Selesai <span id="doneStat"></span>
<span style="grid-column: span 2;">
Kendala:
</span>
<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;">
Solusi:
</span>
<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;">
Catatan Evaluasi:
</span>
<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 style="text-align: right;">
<a-button id="submit">Kirim Evaluasi</a-button>
</div>
<script type="module">
const thisDialog = moly.lastDialog();
const data = thisDialog.data;
function µ(selector)
{
if (selector) return $(thisDialog.box).find(selector);
return $(thisDialog.box);
}
const finJour = data.journal.find(e=>e.status == 4);
const prosol = JSON.parse(finJour.notes);
µ('#act').val(data.actions);
µ('#pro').val(prosol.kendala);
µ('#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")));
µ('#planDur').text(data.timeTarget + " " + (data.isInMonth ? "Bulan" : "Hari"));
µ('#finishedAt').text(finJour.timeStamp.substring(0,16));
µ('#doneStat').text(data.statusText);
µ('iframe')[0].src="/uploads/dokumen/" + finJour.document;
µ('#submit').click(async()=>{
const loadid = moly.loadScreen.show("Mengirim Evaluasi...","sonar","#"+µ('div[id^="db"]')[0].id)
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)
{
moly.alert.show("Pengiriman Evaluaasi Gagal","Tidak dapat mengirim evaluasi. Silakan ulangi kembali beberapa saat lagi.");
moly.loadScreen.close(loadid);
return;
}
moly.loadScreen.close(loadid);
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>