agper-agen/modules/monev-detil.html

162 lines
7.9 KiB
HTML

<div style="display: grid; grid-template-columns: auto 1fr; column-gap: 1.5ch;">
<div style="display: grid; grid-template-columns: auto auto 1fr; column-gap: 1ch;">
<span>Kegiatan</span>
&nbsp;
<select id="kegiatan" style="width: max-content;" disabled>
<option value="-1" selected disabled>-Pilih Kegiatan-</option>
<option value="0">Sebagai Katalis</option>
<option value="1">Sebagai Penggerak Perubahan</option>
<option value="2">Sebagai Pemberi Solusi</option>
<option value="3">Sebagai Mediator</option>
<option value="4">Sebagai Penghubung</option>
</select>
<span>Target Waktu</span>
&nbsp;
<div>
<input type="number" id="target" min="1" style="width: 7ch;" value="1" disabled>
&nbsp;
<select id="targetUnit" style="width: max-content;" disabled>
<option value="0">Hari</option>
<option value="1" selected>Bulan</option>
</select>
</div>
<span class="forDay" hidden>Tgl Mulai</span>
<span class="forDay" hidden></span>
<input class="forDay" type="date" id="startDate" style="max-width: max-content;" hidden disabled>
<span class="forMonth">Bulan Mulai</span>
<span class="forMonth"></span>
<input class="forMonth" type="month" id="startMonth" style="max-width: max-content;" disabled>
<div style="grid-column: span 3;">
<span>Sasaran Kegiatan:</span><br>
<textarea disabled id="sasaran" style="resize: none; width: 100%; height: 4.6em;" maxlength="510" placeholder="Contoh: Mengenakan seragam sesuai aturan."></textarea>
</div>
<div style="grid-column: span 3;">
<span>Sasaran Entitas:</span><br>
<textarea disabled id="enttarget" style="resize: none; width: 100%; height: 4.6em;" maxlength="510" placeholder="Contoh: Seluruh pegawai Kanwil BPN Provinsi Riau."></textarea>
</div>
<div style="grid-column: span 3;">
<span>Indikator:</span><br>
<textarea disabled id="indikator" style="resize: none; width: 100%; height: 4.6em;" maxlength="510" placeholder="Contoh: Persentase pegawai taat aturan berpakaian."></textarea>
</div>
<div style="grid-column: span 3;">
<span>Rencana Aksi:</span><br>
<textarea disabled id="aksi" style="resize: none; width: 100%; height: 4.6em;" maxlength="510" placeholder="Contoh: Sosialisasi aturan berpakaian."></textarea>
</div>
</div>
<div style="width: 54ch;">
<div style="display: grid; grid-template-columns: auto 1fr; column-gap: 1ch; grid-auto-rows: 1.8em; line-height: 1.8em;">
<span style="grid-column: span 2;">Ringkasan Jurnal:</span>
<span>Status Terakhir</span>
<div style="display: grid; grid-template-columns: 1fr auto auto; column-gap: 1ch; grid-auto-rows: 1.8em; line-height: 1.8em;"><div id="lastStatus"></div><div id="evalstat" style="padding: 0 .5ch;">---</div><a-button id="eval" style="padding: 0 .5ch;">Evaluasi</a-button></div>
<span>Tanggal/Waktu</span>
<div id="lastDate"></div>
<span style="grid-column: span 2;">Timeline Jurnal:</span>
<div style="grid-column: span 2; overflow: hidden auto; height: 24em;" id="detJournal">
</div>
</div>
</div>
</div>
<script type="module">
const thisDialog = moly.lastDialog();
const data = thisDialog.data;
function µ(selector)
{
if (selector) return $(thisDialog.box).find(selector);
return $(thisDialog.box);
}
function fillForms()
{
µ('#aksi').val(data.actions);
µ('#enttarget').val(data.entityTarget);
µ('#indikator').val(data.indicators);
µ('#targetUnit').val(data.isInMonth ? 1 : 0);
µ('#kegiatan').val(data.kegiatan);
µ('#sasaran').val(data.sasaran);
let DateTime = data.year + "-" + data.startMonth.toString().padStart(2,"0");
DateTime += data.isInMonth ? "" : "-" + data.startDay.toString().padStart(2,"0");
µ('#target').val(data.timeTarget);
if(data.isInMonth)
{
µ('#startMonth').val(DateTime);
}
else
{
µ('#startDate').val(DateTime);
}
µ('#lastStatus').text(data.statusText);
µ('#lastStatus')[0].style = data.statusStyle;
µ('#evalstat').text(data.journal.at(-1).status == 8 ? "(Sudah Evaluasi)" : data.journal.at(-1).status < 4 ? "(Belum Selesai)" : "(Belum Evaluasi)");
µ('#eval').prop("disabled",((data.journal.at(-1).status < 4 && data.year == (new Date()).getFullYear()) || data.journal.at(-1).status == 8));
µ('#lastDate').text(data.journal.at(-1).timeStamp);
µ('#detJournal').empty();
$.each(data.journal,(_,v)=>{
const group = moly.customElement("group-el");
const by = moly.newElement("div");
const st = moly.newElement("div");
const no = moly.newElement("div");
group.append(by);
// group.append(st);
group.append(no);
group.setAttribute("label",v.timeStamp);
group.setAttribute("collapsed","");
by.append((v.status >=4 && v.status <=6 ? "Selesai " : "") + (data.statusNames[v.status] == "Berjalan" ? "Disetujui" : (data.statusNames[v.status] ?? "")) + (v.status == 8 ? "Dievaluasi" : "") + " oleh "+ agents.find(e=>e.agentID == v.submitterID).name);
by.style = "font-style: italic;"
st.append("Status: " + (v.status >=4 && v.status <=6 ? "Selesai " : "") + data.statusNames[v.status]);
if(v.status ==4)
{
const ks = JSON.parse(v.notes);
no.append("Kendala:");
no.append(moly.newElement("br"));
no.append(ks.kendala.length > 1? ks.kendala : "(Tidak ada)");
no.append(moly.newElement("br"));
no.append("Solusi:");
no.append(moly.newElement("br"));
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
{
no.append("Catatan:");
no.append(moly.newElement("br"));
no.append(v.notes.length > 1? v.notes : "(Tidak ada)");
}
// console.log(typeof v.document)
if(typeof v.document === "string")
{
// alert('s')
const doc = moly.newElement("div");
const doclink = moly.customElement("a-button");
doc.append("Lihat Dokumen: ");
doc.append(doclink);
doclink.append(v.document);
$(doclink).click(async()=>{
await moly.dialog.show({title: "Preview Eviden", content:"/modules/pdf-previewer.html",fetching:true, data: {url: "/uploads/dokumen/" + v.document}});
})
group.append(doc);
}
µ('#detJournal').append(group);
})
$('#detJournal').children().last().prop("collapsed", false);
}
fillForms();
µ('#eval').click(async()=>{
const evalr = await moly.dialog.show({title: "Evaluasi Aksi Perubahan", content: "/modules/monev-eval.html", fetching: true, data});
if(evalr) thisDialog.resolve(data.owner.agentID);
});
</script>