Worked up to submission
This commit is contained in:
parent
0819136981
commit
d72017064f
@ -79,7 +79,8 @@
|
|||||||
<span>Level*</span>
|
<span>Level*</span>
|
||||||
<span>:</span>
|
<span>:</span>
|
||||||
<select id="lvl">
|
<select id="lvl">
|
||||||
<option value="2">Agen Perubahan</option>
|
<option value="3">Agen Perubahan</option>
|
||||||
|
<option value="2">Supervisor</option>
|
||||||
<option value="1">Evaluator</option>
|
<option value="1">Evaluator</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
@ -11,7 +11,8 @@
|
|||||||
<span>Level*</span>
|
<span>Level*</span>
|
||||||
<span>:</span>
|
<span>:</span>
|
||||||
<select id="lvel">
|
<select id="lvel">
|
||||||
<option value="2">Agen Perubahan</option>
|
<option value="3">Agen Perubahan</option>
|
||||||
|
<option value="2">Supervisor</option>
|
||||||
<option value="1">Evaluator</option>
|
<option value="1">Evaluator</option>
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
@ -104,7 +104,7 @@
|
|||||||
$('#hasAc').prop("hidden",false);
|
$('#hasAc').prop("hidden",false);
|
||||||
$('#hasntAc').prop("hidden",true);
|
$('#hasntAc').prop("hidden",true);
|
||||||
$('#unm').text(data.userAccount.username);
|
$('#unm').text(data.userAccount.username);
|
||||||
$('#lvl').text(data.userAccount.level == 0 ? "Super Admin" : data.userAccount.level == 1 ? "Evaluator" : data.userAccount.level == 2 ? "Agen Perubahan" : "Tidak Diketahui: "+ data.userAccount.level);
|
$('#lvl').text(data.userAccount.level == 0 ? "Super Admin" : data.userAccount.level == 1 ? "Evaluator" : data.userAccount.level == 2 ? "Supervisor" : data.userAccount.level == 3 ? "Agen Perubahan" : "Tidak Diketahui: "+ data.userAccount.level);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -11,7 +11,8 @@
|
|||||||
<span>Level</span>
|
<span>Level</span>
|
||||||
<span>:</span>
|
<span>:</span>
|
||||||
<select id="lvel" disabled>
|
<select id="lvel" disabled>
|
||||||
<option value="2">Agen Perubahan</option>
|
<option value="3">Agen Perubahan</option>
|
||||||
|
<option value="2">Supervisor</option>
|
||||||
<option value="1">Evaluator</option>
|
<option value="1">Evaluator</option>
|
||||||
<option value="0">Super Admin</option>
|
<option value="0">Super Admin</option>
|
||||||
</select>
|
</select>
|
||||||
|
@ -120,7 +120,7 @@
|
|||||||
ro.append(ac);
|
ro.append(ac);
|
||||||
id.append(v.agentID);
|
id.append(v.agentID);
|
||||||
un.append(v.username);
|
un.append(v.username);
|
||||||
lv.append(v.level == 0 ? "Super Admin" : v.level == 1 ? "Evaluator" : v.level == 2 ? "Agen" : "Tidak Diketahui: "+ v.level );
|
lv.append(v.level == 0 ? "Super Admin" : v.level == 1 ? "Evaluator" : v.level == 2 ? "Supervisor" : v.level ==3 ? "Agen" : "Tidak Diketahui: "+ v.level );
|
||||||
ac.append(v.active ? "Ya" : "Tidak");
|
ac.append(v.active ? "Ya" : "Tidak");
|
||||||
$(ro).click(async()=>{
|
$(ro).click(async()=>{
|
||||||
const aksi = await moly.dialog.show({title: "Modifikasi Akun Agen",content:"/modules/agen-usermod.html",fetching: true, data: v});
|
const aksi = await moly.dialog.show({title: "Modifikasi Akun Agen",content:"/modules/agen-usermod.html",fetching: true, data: v});
|
||||||
|
@ -1,9 +1,19 @@
|
|||||||
<style>
|
<div style="text-align: center; font-weight: 600; margin: .8em 0; font-size: 1.2em;">
|
||||||
</style><group-el label="Program Kerja">
|
Program Kerja Agen Perubahan
|
||||||
<div style="text-align: right;">
|
</div>
|
||||||
|
<div style="display: flex; justify-content: space-between; padding: 0 2.5ch;">
|
||||||
|
<span>Tahun:
|
||||||
|
<select id="pkYear" style="width: max-content;">
|
||||||
|
|
||||||
|
</select>
|
||||||
|
</span>
|
||||||
|
<div style="display: grid; grid-template-columns: auto auto auto; gap: .75ch;">
|
||||||
|
<a-button id="submitProker">Ajukan Program Kerja</a-button>
|
||||||
|
<sep-bar></sep-bar>
|
||||||
<a-button id="newProker">Tambah Kegiatan</a-button>
|
<a-button id="newProker">Tambah Kegiatan</a-button>
|
||||||
</div>
|
</div>
|
||||||
<div style="max-height: calc(50vh - 6em); overflow-y: scroll; margin: 1em 0" id="pkWrapper">
|
</div>
|
||||||
|
<div style="max-height: calc(50vh - 6em); overflow-y: scroll; 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;">
|
||||||
@ -11,7 +21,7 @@
|
|||||||
<col>
|
<col>
|
||||||
<col style="width: 8ch;">
|
<col style="width: 8ch;">
|
||||||
<col style="width: 17ch;">
|
<col style="width: 17ch;">
|
||||||
<col style="width: 14ch;">
|
<col style="width: 16ch;">
|
||||||
</colgroup>
|
</colgroup>
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
@ -31,13 +41,9 @@
|
|||||||
<tbody id="pkContent" hidden>
|
<tbody id="pkContent" hidden>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
</group-el>
|
|
||||||
<script type="module">
|
<script type="module">
|
||||||
let prokers = [];
|
window.prokers = [];
|
||||||
async function populateProker()
|
|
||||||
{
|
|
||||||
const loadid = moly.loadScreen.show("Memuat Daftar Program Kerja...","bar","#pkWrapper");
|
|
||||||
const kegiatanName = [
|
const kegiatanName = [
|
||||||
"Sebagai Katalis",
|
"Sebagai Katalis",
|
||||||
"Sebagai Penggerak Perubahan",
|
"Sebagai Penggerak Perubahan",
|
||||||
@ -45,17 +51,103 @@
|
|||||||
"Sebagai Mediator",
|
"Sebagai Mediator",
|
||||||
"Sebagai Penghubung"
|
"Sebagai Penghubung"
|
||||||
]
|
]
|
||||||
|
const statusName = [
|
||||||
|
"Draft",
|
||||||
|
"Ditolak",
|
||||||
|
"Diajukan",
|
||||||
|
"Berjalan",
|
||||||
|
"Lebih Awal",
|
||||||
|
"Tepat Waktu",
|
||||||
|
"Terlambat",
|
||||||
|
"Tidak Terlaksana"
|
||||||
|
]
|
||||||
|
async function populateProker()
|
||||||
|
{
|
||||||
|
const loadid = moly.loadScreen.show("Memuat Daftar Program Kerja...","bar","#pkWrapper");
|
||||||
prokers = await getJson('/api/getprokers');
|
prokers = await getJson('/api/getprokers');
|
||||||
if (prokers.status != 200 || prokers.length < 1)
|
if (prokers.status != 200 || prokers.length < 1)
|
||||||
{
|
{
|
||||||
moly.loadScreen.close(loadid);
|
moly.loadScreen.close(loadid);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
prokers = prokers.data;
|
$('#pkYear').empty();
|
||||||
|
const years = [];
|
||||||
|
prokers = prokers.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;
|
||||||
|
},[]);
|
||||||
|
$('#pkYear').val(years.length > 0 ? years[0] : "");
|
||||||
|
$('#submitProker').prop("disabled",years.length < 1);
|
||||||
|
$('#pkYear').change(()=>{
|
||||||
|
fillProker();
|
||||||
|
})
|
||||||
|
fillProker();
|
||||||
|
moly.loadScreen.close(loadid);
|
||||||
|
}
|
||||||
|
function fillProker()
|
||||||
|
{
|
||||||
$('#proker #empty').prop("hidden", prokers.length > 0);
|
$('#proker #empty').prop("hidden", prokers.length > 0);
|
||||||
$('#proker #pkContent').prop("hidden", prokers.length < 1);
|
$('#proker #pkContent').prop("hidden", prokers.length < 1);
|
||||||
$('#proker #pkContent').empty();
|
$('#proker #pkContent').empty();
|
||||||
$.each(prokers,(i,v)=>{
|
const listedProkers = prokers.filter(e=>e.year == Number($('#pkYear').val()));
|
||||||
|
$('#submitProker').prop("disabled",!(listedProkers.length > 0 && listedProkers[0].journal.at(-1).status < 2));
|
||||||
|
const statusStyles =[
|
||||||
|
"text-align: center; background-color: var(--secondary-foreground); color: var(--primary-background)",
|
||||||
|
"text-align: center; background-color: var(--neutral-n-accent); color: var(--primary-foreground)",
|
||||||
|
"text-align: center; background-color: var(--positive-accent); color: var(--primary-foreground)",
|
||||||
|
"text-align: center; background-color: unset; color: unset",
|
||||||
|
"text-align: center; background-color: var(--positive-accent); color: var(--primary-foreground)",
|
||||||
|
"text-align: center; background-color: var(--neutral-p-accent); color: var(--primary-foreground)",
|
||||||
|
"text-align: center; background-color: var(--neutral-n-accent); color: var(--primary-foreground)",
|
||||||
|
"text-align: center; background-color: var(--negative-accent); color: var(--primary-background)",
|
||||||
|
];
|
||||||
|
$.each(listedProkers,(i,v)=>{
|
||||||
|
|
||||||
const ro = moly.newElement("tr");
|
const ro = moly.newElement("tr");
|
||||||
const no = moly.newElement("td");
|
const no = moly.newElement("td");
|
||||||
const kg = moly.newElement("td");
|
const kg = moly.newElement("td");
|
||||||
@ -77,8 +169,8 @@
|
|||||||
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));
|
||||||
wm.style.textAlign = "right";
|
wm.style.textAlign = "right";
|
||||||
st.append("Draft");
|
st.append(statusName[v.journal.at(-1).status]);
|
||||||
st.style.textAlign = "center";
|
st.style = statusStyles[v.journal.at(-1).status];
|
||||||
$(ro).click(async()=>{
|
$(ro).click(async()=>{
|
||||||
const data = v;
|
const data = v;
|
||||||
const vw = await moly.dialog.show({title: "Detil Program Kerja", content: "/modules/kegiatan-proker-view.html", fetching: true, data});
|
const vw = await moly.dialog.show({title: "Detil Program Kerja", content: "/modules/kegiatan-proker-view.html", fetching: true, data});
|
||||||
@ -86,7 +178,6 @@
|
|||||||
})
|
})
|
||||||
$('#proker #pkContent').append(ro);
|
$('#proker #pkContent').append(ro);
|
||||||
});
|
});
|
||||||
moly.loadScreen.close(loadid);
|
|
||||||
}
|
}
|
||||||
$(document).ready(async()=>{
|
$(document).ready(async()=>{
|
||||||
populateProker();
|
populateProker();
|
||||||
@ -95,5 +186,27 @@
|
|||||||
const np = await moly.dialog.show({title: "Entri Program Kerja dan Rencana Aksi", content: "/modules/kegiatan-proker-new.html", fetching: true, data});
|
const np = await moly.dialog.show({title: "Entri Program Kerja dan Rencana Aksi", content: "/modules/kegiatan-proker-new.html", fetching: true, data});
|
||||||
if(np) populateProker();
|
if(np) populateProker();
|
||||||
});
|
});
|
||||||
|
$('#submitProker').click(async()=>{
|
||||||
|
const loadid = moly.loadScreen.show("Memuat Daftar Program Kerja...","bar","#pkWrapper");
|
||||||
|
const listedProkers = prokers.filter(e=>e.year == Number($('#pkYear').val()));
|
||||||
|
const progCheck = [false,false,false,false,false];
|
||||||
|
$.each(listedProkers,(_,v)=>{progCheck[v.kegiatan] = true});
|
||||||
|
if(!(progCheck[0] && progCheck[1] && progCheck[2] && progCheck[3] && progCheck[4]))
|
||||||
|
{
|
||||||
|
moly.alert.show("Program Kerja Belum Lengkap","Harap melengkapi Program Kerja. Pastikan seluruh Kegiatan telah diprogramkan.");
|
||||||
|
console.log(progCheck)
|
||||||
|
moly.loadScreen.close(loadid);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const submission = await postJson('/api/submitpk',{agentid: userDetails.agentID, year: Number($('#pkYear').val())});
|
||||||
|
if(submission.status != 202)
|
||||||
|
{
|
||||||
|
moly.alert.show("Pengajuan Program Kerja Gagal","Program Kerja tidak berhasil diajukan. Silakan ulangi kembali beberapa saat lagi.")
|
||||||
|
moly.loadScreen.close(loadid);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
populateProker();
|
||||||
|
moly.loadScreen.close(loadid);
|
||||||
|
})
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
Loading…
x
Reference in New Issue
Block a user