Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- window.onload = function () {
- var card = `<div class="card card-body" id="table-wrapper">
- <div class="col-12 d-flex justify-content-center">
- <div class="spinner-border text-center" role="status">
- <span class="visually-hidden">Loading...</span>
- </div>
- </div>
- </div>`;
- Promise.all([
- document.getElementById('card-wrapper').innerHTML = card
- ])
- .then(() => {
- periodeList();
- })
- }
- async function periodeList() {
- await fetch(`${base_url}admin_periode/list/jadwal`)
- .then(response => response.json())
- .then(data => {
- var periodes = JSON.parse(data);
- if (periodes.success === true) {
- if (Object.keys(periodes.data[0]).length !== 0) {
- Promise.all([
- tableHead(),
- ])
- var tbody = document.getElementById('tbody-list');
- tbody.innerHTML = '';
- var newRow = [];
- var periode = periodes.data;
- periode.forEach(function (period) {
- Object.keys(period).forEach(tahun => {
- newRow.push(`<tr>
- <td rowspan="${period[tahun].length + 1}" class="align-top">
- <span class="usr-location" data-location="">
- ${tahun}
- </span>
- </td>
- </tr>`);
- period[tahun].forEach(jadwals => {
- newRow.push(buatTable(jadwals));
- })
- });
- })
- buatCountDown();
- tbody.innerHTML = newRow.join('');
- } else {
- document.getElementById('card-wrapper').innerHTML = `
- <div class="card card-body" id="table-wrapper">
- <div class="col-12 d-flex justify-content-center">
- <span class="text-center fw-bolder">"Belum Ada Jadwal"</span>
- </div>
- </div>
- `;
- }
- } else {
- cekLogin(periodes.data);
- }
- })
- .catch(error => console.error('Error fetching data:', error));
- }
- function tableHead() {
- var table = `<div class="table-responsive">
- <table class="table align-middle text-nowrap">
- <thead class="header-item">
- <th>Tahun</th>
- <th>Kegiatan</th>
- <th>OPD</th>
- <th class="text-center">Periode Berakhir</th>
- <th class="text-center">Status</th>
- <th class="text-center">Aksi</th>
- </thead>
- <tbody id="tbody-list">
- <tr>
- <td colspan="5" class="text-center">
- <div class="card card-body blink bg-light rounded">
- <div class="col-12 d-flex justify-content-center">
- <div class="spinner-border text-center" role="status">
- <span class="visually-hidden">Loading...</span>
- </div>
- </div>
- </div>
- </td>
- </tr>
- </tbody>
- </table>
- </div>`;
- document.getElementById('table-wrapper').innerHTML = table;
- }
- function buatTable(jadwal) {
- var uraian = [];
- uraian.push(`<tr>
- <td>
- <div class="d-flex align-items-center">
- <i class="ti ti-calendar text-info fw-bolder fs-12"></i>
- <div class="ms-3">
- <div class="user-meta-info">
- <h6 class="user-name mb-2 fw-bolder">
- ${jadwal.namaPeriode}
- </h6>
- <span class="user-work fs-3">
- ${jadwal.waktuMulai} - ${jadwal.waktuAkhir}
- </span></br>
- </div>
- </div>
- </div>
- </td>
- <td class="text-center fw-bolder">
- ${jadwal.opdList.length}
- <a href="javascript:void(0)" id="lihatOpd${jadwal.idPeriode}" class="ms-3" onclick='listOpd(${jadwal.idPeriode}, this.id)'>
- <i class="ti ti-eye text-primary"></i>
- </a>
- </td>
- <td class="text-center">
- <div class="user-work fs-3" id="countDown${jadwal.idPeriode}">
- ${jadwal.waktuAkhir}
- </div>
- </td>
- <td class="text-center">
- <span class="usr-ph-no" data-phone="">`);
- if (jadwal.status == 1) {
- uraian.push('<strong class="text-success">Aktif</strong>');
- } else if (jadwal.status == 0) {
- uraian.push('<strong class="text-danger">Berakhir</strong>');
- } else {
- uraian.push('<strong class="text-dark">Non Aktif</strong>');
- }
- uraian.push(`</span>
- </td>
- <td class="text-center">
- <div class="action-btn">
- <button type="button"
- class="btn mb-1 me-2 btn-warning btn-circle btn-sm d-inline-flex align-items-center justify-content-center"
- id="btn-edit-${jadwal.idPeriode}"
- onclick="editData('${jadwal.idPeriode}'), spiner(this.id)">
- <i class="fs-5 ti ti-edit"></i>
- </button>
- <button type="button"
- class="btn mb-1 btn-danger btn-circle btn-sm d-inline-flex align-items-center justify-content-center"
- data-bs-toggle="modal" data-bs-target="#deleteModal"
- onclick="deleteData('${jadwal.idPeriode}','${jadwal.namaPeriode}', '${jadwal.tahunPeriode}')">
- <i class="fs-5 ti ti-trash"></i>
- </button>
- </div>
- </td>
- </tr>`);
- return uraian.join('');
- }
- async function listOpd(id, btn) {
- spiner(btn);
- await fetch(`${base_url}admin_periode/list/opd/${id}`)
- .then(response => response.json())
- .then(data => {
- document.getElementById('detail-nama-periode').innerHTML = `${data.nama} (${data.tahun})`
- document.getElementById('detail-jumlah-opd').innerHTML = `Jumlah OPD: ${data.jumlah}`
- var opdList = [];
- data.opd.forEach(Element => {
- opdList.push(`<p class="list-group-item list-group-item-action">
- <i class="ti col-2 ti-home fw-bolder fs-5 me-2"></i>
- <span class="col-9">${Element}</span>
- </p>`);
- })
- document.getElementById('detail-list-nama-opd').innerHTML = opdList.join('');
- $('#lihat-opd').modal('show');
- })
- .catch(error => console.error('Error fetching data:', error));
- afterSpiner(btn, '', 'eye');
- }
- function buatCountDown() {
- $.ajax({
- url: `${base_url}admin_periode/listJadwal`,
- type: "GET"
- }).done(function (response) {
- var data = JSON.parse(response);
- data.forEach((yearData) => {
- for (const year in yearData) {
- const periods = yearData[year];
- periods.forEach((period) => {
- const idPeriode = period.idPeriode;
- const waktuAkhir = period.waktuAkhir;
- const date = formatJadwal(waktuAkhir);
- document.getElementById(`countDown${idPeriode}`).innerHTML = '-- -- -- --'
- countDown(`countDown${idPeriode}`, date);
- });
- }
- });
- })
- }
- $('#date-range-edit').each(function () {
- $(this).datepicker({
- format: "yyyy-mm-dd",
- startDate: new Date(),
- autoclose: true,
- });
- $(this).datepicker('clearDates');
- });
- $('#date-range-add').each(function () {
- $(this).datepicker({
- format: "yyyy-mm-dd",
- startDate: new Date(),
- autoclose: true,
- });
- $(this).datepicker('clearDates');
- });
- $('#edit-tahun').datepicker({
- format: "yyyy",
- startView: 2,
- minViewMode: 2,
- autoclose: true,
- startDate: "2019"
- });
- $(document).ready(function () {
- // opdSelect2('#edit-opd', '#editModal', 'semua');
- opdSelect2('#opd', '#addModal', 'semua');
- // Tangani perubahan pada elemen select
- $('#opd').on('change', function (e) {
- var selectedValues = $(this).val();
- // Jika "Select All" dipilih, pilih semua opsi
- if (selectedValues && selectedValues.includes('-1')) {
- $('#opd').find('option').prop('selected', true);
- $('#opd').trigger('change');
- }
- });
- });
- async function addForm(id) {
- spiner(id, ' Mengambil Form');
- $('#form-add')[0].reset();
- $('#opd').val(null).trigger('change');
- Promise.all([
- await createSelect('tahun')
- ])
- .then(() => {
- $('#addModal').modal('show');
- afterSpiner(id, 'Buat Jadwal', 'calendar-plus fs-5 me-1');
- })
- }
- async function createSelect(tahun) {
- await fetch(`${base_url}admin_tahun/list`)
- .then(response => response.json())
- .then(data => {
- var selectTahun = document.getElementById(tahun);
- while (selectTahun.firstChild) {
- selectTahun.removeChild(selectTahun.firstChild);
- }
- var pilihTahun = document.createElement('option');
- pilihTahun.text = "Pilih tahun ...";
- pilihTahun.value = "placeholder";
- pilihTahun.selected = true;
- pilihTahun.disabled = true;
- selectTahun.appendChild(pilihTahun);
- var tahunSatu = document.createElement("option");
- tahunSatu.value = data.data.tahunSatu;
- tahunSatu.text = data.data.tahunSatu;
- selectTahun.appendChild(tahunSatu);
- var tahunDua = document.createElement("option");
- tahunDua.value = data.data.tahunDua;
- tahunDua.text = data.data.tahunDua;
- selectTahun.appendChild(tahunDua);
- var tahunTiga = document.createElement("option");
- tahunTiga.value = data.data.tahunTiga;
- tahunTiga.text = data.data.tahunTiga;
- selectTahun.appendChild(tahunTiga);
- var tahunEmpat = document.createElement("option");
- tahunEmpat.value = data.data.tahunEmpat;
- tahunEmpat.text = data.data.tahunEmpat;
- selectTahun.appendChild(tahunEmpat);
- var tahunLima = document.createElement("option");
- tahunLima.value = data.data.tahunLima;
- tahunLima.text = data.data.tahunLima;
- selectTahun.appendChild(tahunLima);
- var tahunEnam = document.createElement("option");
- tahunEnam.value = data.data.tahunLima + 1;
- tahunEnam.text = data.data.tahunLima + 1;
- selectTahun.appendChild(tahunEnam);
- })
- .catch(error => console.error('Error fetching data:', error));
- }
- $(document).ready(function () {
- $("#submit-add").click(function () {
- spiner(this.id, 'Menyimpan')
- // Membuat struktur array opd
- var opd = [];
- var selectOpd = document.getElementById("opd");
- var opdId = [];
- for (var i = 0; i < selectOpd.options.length; i++) {
- var option = selectOpd.options[i];
- if (option.selected) {
- opdId.push({ "opdId": option.value });
- }
- }
- opd = opdId
- $('#tahun, #nama, #mulai, #akhir').each(function () {
- var value = $(this).val().trim();
- $(this).addClass(value === '' ? 'is-invalid' : 'is-valid');
- });
- // Melakukan request untuk submit
- $.ajax({
- url: `${base_url}admin_periode/create`,
- type: 'POST',
- data: {
- tahun: $("#tahun").val(),
- nama: $("#nama").val(),
- mulai: $("#mulai").val(),
- akhir: $("#akhir").val(),
- opd: opd
- }
- }).done(function (response) {
- console.log(response);
- var data = JSON.parse(response);
- if (data.success == 1) {
- periodeList();
- // Form validation
- $('#addModal').modal('hide');
- // Reset Form
- $('.form-control').removeClass('is-invalid is-valid');
- document.getElementById("form-add").reset();
- for (var i = 0; i < selectOpd.options.length; i++) {
- selectOpd.options[i].selected = false;
- }
- toastr.success(data.message, "Berhasil");
- } else {
- toastr.error("Periksa kembali form anda", "Gagal menambahkan");
- }
- })
- afterSpiner(this.id, 'Simpan', 'send');
- })
- })
- async function editData(id) {
- $('#form-edit')[0].reset();
- $('#edit-opd').val(null).trigger('change');
- Promise.all([
- await createSelect('edit-tahun', 'edit-opd')
- ]);
- $.ajax({
- url: `${base_url}admin_periode/list/edit/${id}`,
- type: "GET"
- }).done(function (response) {
- var parse = JSON.parse(response);
- var data = parse.data[0];
- document.getElementById('edit-id').value = data.idPeriode;
- document.getElementById('edit-tahun').value = data.tahunPeriode;
- document.getElementById('edit-nama').value = data.namaPeriode;
- document.getElementById('edit-mulai').value = data.waktuMulai;
- document.getElementById('edit-akhir').value = data.waktuAkhir;
- var listOpd = data.opdList;
- // opdEditSelect2(listOpd, '#edit-opd');
- opdSelect(listOpd, '#edit-opd', '#editModal', 'semua');
- var selectStatus = document.getElementById('edit-status');
- var status = selectStatus.querySelector('option[value="' + data.status + '"]');
- if (status) {
- status.selected = true;
- }
- $('#editModal').modal('show');
- afterSpiner(`btn-edit-${id}`, '', 'edit fs-5');
- })
- }
- $(document).ready(function () {
- $("#submit-edit").click(function () {
- spiner(this.id, 'Menyimpan');
- Promise.all([
- $('.form-control').removeClass('is-invalid is-valid'),
- $('#edit-tahun, #edit-nama, #edit-mulai, #edit-akhir').each(function () {
- var value = $(this).val().trim();
- $(this).addClass(value === '' ? 'is-invalid' : 'is-valid');
- if (value === '') {
- submit.classList.toggle('d-none');
- load.classList.toggle('d-none');
- process.exit();
- }
- })
- ])
- .then(() => {
- var opd = [];
- var selectOpd = document.getElementById("edit-opd");
- var opdId = [];
- for (var i = 0; i < selectOpd.options.length; i++) {
- var option = selectOpd.options[i];
- if (option.selected) {
- opdId.push({ "opdId": option.value });
- }
- }
- opd = opdId
- $.ajax({
- url: `${base_url}admin_periode/update`,
- type: 'POST',
- data: {
- id: $("#edit-id").val(),
- tahun: $("#edit-tahun").val(),
- nama: $("#edit-nama").val(),
- mulai: $("#edit-mulai").val(),
- akhir: $("#edit-akhir").val(),
- status: $("#edit-status").val(),
- opd: opd
- }
- }).done(function (response) {
- var data = JSON.parse(response);
- if (data.success == 1) {
- periodeList();
- afterSpiner('submit-edit', 'Simpan', 'send');
- $('#edit-tahun, #edit-nama, #edit-mulai, #edit-akhir').each(function () {
- $(this).removeClass('is-invalid');
- $(this).removeClass('is-valid');
- })
- $('#editModal').modal('hide');
- toastr.success(data.message);
- } else {
- afterSpiner('submit-edit', 'Simpan', 'send');
- toastr.error(data.message);
- }
- })
- })
- .then(() => {
- afterSpiner('submit-edit', 'Simpan', 'send');
- })
- })
- })
- function deleteData(id, nama, tahun) {
- document.getElementById('namaDelete').innerHTML = nama;
- document.getElementById('tahunDelete').innerHTML = tahun;
- document.getElementById('idDelete').value = id;
- }
- $(document).ready(function () {
- $('#buttonDelete').click(function () {
- spiner('buttonDelete', 'Menghapus');
- var id = document.getElementById('idDelete').value;
- $.ajax({
- url: `${base_url}admin_periode/delete/${id}`,
- type: "GET"
- }).done(function (response) {
- var data = JSON.parse(response);
- if (data.success == 1) {
- periodeList();
- $('#deleteModal').modal('hide');
- toastr.success(data.message);
- afterSpiner('buttonDelete', 'Hapus', 'trash');
- } else {
- periodeList();
- $('#deleteModal').modal('hide');
- toastr.error(data.message);
- afterSpiner('buttonDelete', 'Hapus', 'trash');
- }
- });
- });
- })
Add Comment
Please, Sign In to add comment