90 lines
3.9 KiB
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 Mulai <span id="planStart"></span>
|
|
Rencana Durasi <span id="planDur"></span>
|
|
Selesai Pada <span id="finishedAt"></span>
|
|
Status 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> |