diff --git a/konsultasi/.htaccess b/konsultasi/.htaccess new file mode 100644 index 0000000..ff8f6d9 --- /dev/null +++ b/konsultasi/.htaccess @@ -0,0 +1,3 @@ +RewriteEngine On +RewriteCond %{SERVER_PORT} 80 +RewriteRule ^(.*)$ https://spota.untan.ac.id/konsultasi/$1 [R,L] \ No newline at end of file diff --git a/konsultasi/API/datatable/data_kerja_praktek.php b/konsultasi/API/datatable/data_kerja_praktek.php new file mode 100644 index 0000000..7cd929e --- /dev/null +++ b/konsultasi/API/datatable/data_kerja_praktek.php @@ -0,0 +1,226 @@ +connect(); + +$connBio = new createCon(); +$dbhBio = $connBio->connectDbBio(); + +$connDosen = new createCon(); +$dbhDosen = $connDosen->connectDbDosen(); + +if (!isset($_SESSION['konsulDosen'])) { + echo getUnauthorizedMessage(); + exit(); +} + +$whereVerif = ''; +if (!($verif == 'all')) { + $verif = intval($verif); + $whereVerif = " AND setuju = '$verif' "; + + if (isset($_GET['kp'])) { + $whereVerif = " AND proposalApproved = '$verif' "; + } +} + +$nipDosen = $_SESSION['konsulDosen']['nip']; + +$sql = 'SELECT * FROM dosen'; +$stmt = $dbhDosen->prepare($sql); +$stmt->execute(); + +$listDosen = []; +while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { + $listDosen[$row['id_dosen']] = $row['nama_dosen']; +} + +$sql = 'SELECT * FROM dosen WHERE nip = :nip'; +$stmt = $dbhDosen->prepare($sql); +$stmt->bindParam(':nip', $nipDosen); +$stmt->execute(); + +if ($stmt->rowCount() == 0) { + echo getDataNotFoundMessage(); + exit(); +} + +while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { + $idDosen = $row['id_dosen']; +} + $whereJenisDosen = "AND (id_dosen_pa = '$idDosen' OR pembimbingLapangan = '$idDosen')"; + + if (isset($_GET['pa'])) { + $whereJenisDosen = "AND id_dosen_pa = '$idDosen'"; + } + + if (isset($_GET['kp'])) { + $whereJenisDosen = "AND pembimbingLapangan = '$idDosen'"; + } + + $sql = "SELECT kerja_praktek.*, nama_lengkap, id_dosen_pa, no_telp, no_hp, email FROM kerja_praktek LEFT JOIN bio_mahasiswa ON kerja_praktek.nim = bio_mahasiswa.nim WHERE (nama_lengkap LIKE :search OR kerja_praktek.nim LIKE :search2) $whereJenisDosen $whereVerif"; + $stmt = $dbhBio->prepare($sql); + $stmt->bindParam(':search', $searchText); + $stmt->bindParam(':search2', $searchText); + $stmt->execute(); + + $totalData = $stmt->rowCount(); + + $sqlLimit = "SELECT kerja_praktek.*, nama_lengkap, id_dosen_pa, no_telp, no_hp, email FROM kerja_praktek LEFT JOIN bio_mahasiswa ON kerja_praktek.nim = bio_mahasiswa.nim WHERE (nama_lengkap LIKE :search OR kerja_praktek.nim LIKE :search2) $whereJenisDosen $whereVerif ORDER BY waktuInput DESC LIMIT $start, $length"; + $stmt = $dbhBio->prepare($sqlLimit); + $stmt->bindParam(':search', $searchText); + $stmt->bindParam(':search2', $searchText); + $stmt->execute(); + $data = []; + + $no = 1; + while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { + $noPushed = $start + $no; + $idKerjaPraktek = convertKosong($row['idKerjaPraktek']); + $semester = convertKosong($row['semester']); + $tahun = convertKosong($row['tahun']); + $instansi = convertKosong($row['namaInstansi']); + $alamatInstansi = convertKosong($row['alamatInstansi']); + $idDosenPA = $row['id_dosen_pa']; + $topik = convertKosong($row['topik']); + $pimpinan = convertKosong($row['namaPimpinan']); + $pembimbing = convertKosong($row['pembimbingLapangan']); + $alamatInstansi = convertKosong($row['alamatInstansi']); + $noTelp = convertKosong($row['no_telp']); + $noHP = convertKosong($row['no_hp']); + $email = convertKosong($row['email']); + $proposalApproved = $row['proposalApproved']; + $catatanProposalKP = ''; + + if (isset($_GET['kp'])) { + $catatanProposalKP = $row['catatanRevisiProposal']; + } + $fileProposal = $row['proposal']; + if ($fileProposal != null && $fileProposal != '') { + $fileProposal = "../../biodata/berkas/$fileProposal"; + } + + $pembimbingKP = false; + if ($pembimbing === $idDosen) { + $pembimbingKP = true; + } + + $pembimbingPA = false; + if ($idDosenPA === $idDosen) { + $pembimbingPA = true; + } + + if (isset($listDosen[$pembimbing])) { + $namaPembimbing = $listDosen[$pembimbing]; + } else { + $namaPembimbing = '-'; + } + + if ($pembimbing == '0') { + $namaPembimbing = 'Belum Ditentukan'; + } + + $narahubung = convertKosong($row['naraHubung']); + $telpNarahubung = convertKosong($row['telpNarahubung']); + $deskripsiKP = convertKosong($row['deskripsiKP']); + $catatanKajur = convertKosong($row['catatanKajur']); + $waktuInput = convertKosong($row['waktuInput']); + $setuju = convertKosong($row['setuju']); + $timestampSetuju = convertKosong($row['timestampSetuju']); + $setujuAdmin = convertKosong($row['setujuAdmin']); + $timestampSetujuAdmin = convertKosong($row['timestampSetujuAdmin']); + $catatanPA = $row['catatanPA']; + + $dateTimeInput = '-'; + if ($waktuInput !== '0') { + $dateTimeInput = date('d-m-Y H:i:s', $waktuInput); + } + + $dateTimeSetuju = '-'; + if ($timestampSetuju !== '0') { + $dateTimeSetuju = date('d-m-Y H:i:s', $timestampSetuju); + } + + $dateTimeSetujuAdmin = '-'; + if ($timestampSetujuAdmin !== '0') { + $dateTimeSetujuAdmin = date('d-m-Y H:i:s', $timestampSetujuAdmin); + } + $namaMahasiswa = $row['nama_lengkap']; + $nim = $row['nim']; + + $waktuTerakhirKonsul = $row['waktuTerakhirKonsul']; + if ($waktuTerakhirKonsul == '') { + $diffDay = ''; + $terakhirKonsulText = '-'; + } else { + $timeAwal = intval($waktuTerakhirKonsul); + $timeAkhir = time(); + $datediff = $timeAkhir - $timeAwal; + + $diffDay = round($datediff / (60 * 60 * 24)); + + if ($diffDay < 0) { + $diffDay = 0; + } + $terakhirKonsulText = date('d-m-Y', $waktuTerakhirKonsul).'
('.$diffDay.' Hari)'; + } + + array_push($data, [ + $noPushed, + $topik, + $instansi, + $semester, + $tahun, + $namaPembimbing, + $setuju, + $idKerjaPraktek, + $narahubung, + $telpNarahubung, + $deskripsiKP, + $catatanKajur, + $dateTimeInput, + $dateTimeSetuju, + $pimpinan, + $alamatInstansi, + $setujuAdmin, + $namaMahasiswa, + $nim, + $catatanPA, + $pembimbingKP, + $pembimbingPA, + $dateTimeSetujuAdmin, + $proposalApproved, + $fileProposal, + $catatanProposalKP, + intval($row['lanjutanDari']), + $noTelp, + $noHP, + $email, + ] + ); + ++$no; + } + +$recordsTotal = $totalData; + +$res = []; +$res['draw'] = $draw; +$res['recordsTotal'] = $recordsTotal; +$res['recordsFiltered'] = $recordsTotal; +$res['data'] = $data; + +echo json_encode($res); diff --git a/konsultasi/API/datatable/data_tugas_akhir.php b/konsultasi/API/datatable/data_tugas_akhir.php new file mode 100644 index 0000000..9ebe2d3 --- /dev/null +++ b/konsultasi/API/datatable/data_tugas_akhir.php @@ -0,0 +1,107 @@ +connect(); + +if (!isset($_SESSION['konsulDosen'])) { + echo getUnauthorizedMessage(); + exit(); +} + +$orderQ = ''; +switch ($orderBy) { + case 'judulTerbaru': $orderQ = ' ORDER BY tugas_akhir.idTugasAkhir DESC '; break; + case 'konsultasiTerbaru': $orderQ = ' ORDER BY waktuTerakhirKonsul DESC '; break; + case 'konsultasiTerlama': $orderQ = ' ORDER BY waktuTerakhirKonsul ASC '; break; +} + +$whereSelesai = ''; +if (isset($_GET['selesai'])) { + $selesai = $_GET['selesai']; + if ($selesai != 'all') { + $selesai = intval($selesai); + $whereSelesai = " AND selesai = '$selesai' "; + } +} + +$nipDosen = $_SESSION['konsulDosen']['nip']; + + $sql = "SELECT * FROM tugas_akhir LEFT JOIN mahasiswa ON tugas_akhir.nim = mahasiswa.nim LEFT JOIN (SELECT * FROM konsultasi GROUP BY idTugasAkhir) t ON tugas_akhir.idTugasAkhir = t.idTugasAkhir WHERE (pemb1 = '$nipDosen' OR pemb2 = '$nipDosen') AND (judul LIKE :search OR nama LIKE :search2 OR tugas_akhir.nim LIKE :search3) AND keputusan = '1' $whereSelesai"; + $stmt = $dbh->prepare($sql); + $stmt->bindParam(':search', $searchText); + $stmt->bindParam(':search2', $searchText); + $stmt->bindParam(':search3', $searchText); + $stmt->execute(); + + $totalData = $stmt->rowCount(); + + $sqlLimit = "SELECT tugas_akhir.idTugasAkhir, judul, nama, tugas_akhir.nim, semester, waktuTerakhirKonsul, selesai FROM tugas_akhir LEFT JOIN mahasiswa ON tugas_akhir.nim = mahasiswa.nim LEFT JOIN (SELECT idTugasAkhir, MAX(timestamp) AS waktuTerakhirKonsul FROM konsultasi GROUP BY idTugasAkhir) t ON tugas_akhir.idTugasAkhir = t.idTugasAkhir WHERE (pemb1 = '$nipDosen' OR pemb2 = '$nipDosen') AND (judul LIKE :search OR nama LIKE :search2 OR tugas_akhir.nim LIKE :search3) AND keputusan = '1' $whereSelesai $orderQ LIMIT $start, $length"; + $stmt = $dbh->prepare($sqlLimit); + $stmt->bindParam(':search', $searchText); + $stmt->bindParam(':search2', $searchText); + $stmt->bindParam(':search3', $searchText); + $stmt->execute(); + $data = []; + + $no = 1; + while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { + $noPushed = $start + $no; + $idTA = $row['idTugasAkhir']; + $judul = $row['judul']; + $nama = $row['nama']; + $nim = $row['nim']; + $semester = $row['semester']; + + $waktuTerakhirKonsul = $row['waktuTerakhirKonsul']; + if ($waktuTerakhirKonsul == '') { + $diffDay = ''; + $terakhirKonsulText = '-'; + } else { + $timeAwal = intval($waktuTerakhirKonsul); + $timeAkhir = time(); + $datediff = $timeAkhir - $timeAwal; + + $diffDay = round($datediff / (60 * 60 * 24)); + + if ($diffDay < 0) { + $diffDay = 0; + } + $terakhirKonsulText = date('d-m-Y', $waktuTerakhirKonsul).'
('.$diffDay.' Hari)'; + } + + array_push($data, [ + $noPushed, + $judul, + $nama.'
NIM '.$nim.'', + $semester, + $terakhirKonsulText, + $idTA, + intval($row['selesai']), + ] + ); + ++$no; + } + +$recordsTotal = $totalData; + +$res = []; +$res['draw'] = $draw; +$res['recordsTotal'] = $recordsTotal; +$res['recordsFiltered'] = $recordsTotal; +$res['data'] = $data; + +echo json_encode($res); diff --git a/konsultasi/API/datatable/index.php b/konsultasi/API/datatable/index.php new file mode 100644 index 0000000..e69de29 diff --git a/konsultasi/API/public/getKonsultasiHistory.php b/konsultasi/API/public/getKonsultasiHistory.php new file mode 100644 index 0000000..84e7c26 --- /dev/null +++ b/konsultasi/API/public/getKonsultasiHistory.php @@ -0,0 +1,82 @@ +connect(); + +checkKey('GET', 'id'); + +$idPraoutline = intval($_GET['id']); + +$sql = 'SELECT * FROM tugas_akhir WHERE idPraoutline = :id'; +$stmt = $dbh->prepare($sql); +$stmt->bindParam(':id', $idPraoutline); +$stmt->execute(); + +if ($stmt->rowCount() == 0) { + echo getKonsultasiNotFoundMessage(); + exit(); +} + +while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { + $pemb1 = $row['pemb1']; + $pemb2 = $row['pemb2']; + $idTugasAkhir = $row['idTugasAkhir']; +} + +$sql = "SELECT * FROM dosen WHERE nip IN('$pemb1','$pemb2')"; +$stmt = $dbh->prepare($sql); +$stmt->execute(); + +$namaPemb1 = '-'; +$namaPemb2 = '-'; + +while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { + $nipDb = $row['nip']; + if ($nipDb == $pemb1) { + $namaPemb1 = $row['namaDosen']; + } + + if ($nipDb == $pemb2) { + $namaPemb2 = $row['namaDosen']; + } +} + +$sql = 'SELECT * FROM konsultasi WHERE idTugasAkhir = :id AND (timestampDosen1 > 0 OR timestampDosen2 > 0) ORDER BY timestamp'; +$stmt = $dbh->prepare($sql); +$stmt->bindParam(':id', $idTugasAkhir); +$stmt->execute(); + +$data = array(); +while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { + $timestamp = $row['timestamp']; + $waktuText = date('d-m-Y', $timestamp); + $topik = $row['topik']; + $timestampDosen1 = intval($row['timestampDosen1']); + $timestampDosen2 = intval($row['timestampDosen2']); + + if($timestampDosen1 > 0){ + $pemb = $namaPemb1; + } + + if($timestampDosen2 > 0){ + $pemb = $namaPemb2; + } + + array_push($data, array( + 'id' => $row['idKonsul'], + 'waktu' => $waktuText, + 'topik' => $topik, + 'pembimbing' => $pemb, + )); +} + +echo json_encode(utf8ize(array( + 'status' => 1, + 'data' => $data, +))); \ No newline at end of file diff --git a/konsultasi/API/public/index.php b/konsultasi/API/public/index.php new file mode 100644 index 0000000..e69de29 diff --git a/konsultasi/API/web/editKonsultasi.php b/konsultasi/API/web/editKonsultasi.php new file mode 100644 index 0000000..3b95b5b --- /dev/null +++ b/konsultasi/API/web/editKonsultasi.php @@ -0,0 +1,96 @@ +connect(); + +checkKey('POST', 'token'); +checkKey('POST', 'id'); +checkKey('POST', 'topik'); +checkKey('POST', 'tanggal'); + +$token = trim($_POST['token']); +$id = trim($_POST['id']); +$topik = trim($_POST['topik']); +$tanggal = trim($_POST['tanggal']); + +$authorized = false; + +$sql = 'SELECT * FROM tugas_akhir LEFT JOIN mahasiswa ON tugas_akhir.nim = mahasiswa.nim WHERE token = :token AND idTugasAkhir = (SELECT idTugasAkhir FROM konsultasi WHERE idKonsul = :idKonsul)'; +$stmt = $dbh->prepare($sql); +$stmt->bindParam(':token', $token); +$stmt->bindParam(':idKonsul', $id); +$stmt->execute(); + +if ($stmt->rowCount() > 0) { + $authorized = true; +} + +if (!$authorized) { + echo getUnauthorizedMessage(); + exit(); +} + +if ($topik == '') { + echo getDataEmptyMessage(); + exit(); +} + +$sql = 'SELECT * FROM konsultasi WHERE idKonsul = :idKonsul'; +$stmt = $dbh->prepare($sql); +$stmt->bindParam(':idKonsul', $id); +$stmt->execute(); + +$timestamp1 = 0; +$timestamp2 = 0; + +while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { + $timestamp1 = intval($row['timestampDosen1']); + $timestamp2 = intval($row['timestampDosen2']); +} + +if ($timestamp1 > 0 || $timestamp2 > 0) { + echo json_encode( + array( + 'status' => 0, + 'msg' => 'Tidak dapat mengedit data konsultasi ini, data telah di verifikasi pembimbing!!!', + ) + ); + exit(); +} + + $sql = 'UPDATE konsultasi SET tanggal = :tanggal, topik = :topik WHERE idKonsul = :idKonsul'; + $stmt = $dbh->prepare($sql); + $stmt->bindParam(':tanggal', $tanggal); + $stmt->bindParam(':topik', $topik); + $stmt->bindParam(':idKonsul', $id); + $stmt->execute(); + + $error = $stmt->errorInfo(); + + $isError = true; + + if ($error[0] == '00000') { + $isError = false; + } + + if ($isError) { + echo json_encode( + array( + 'status' => 0, + 'msg' => 'Terjadi kesalahan teknis!!!', + ) + ); + } else { + echo json_encode( + array( + 'status' => 1, + 'msg' => 'Berhasil mengedit data konsultasi!!!', + ) + ); + } diff --git a/konsultasi/API/web/getDetailTA.php b/konsultasi/API/web/getDetailTA.php new file mode 100644 index 0000000..5b63c02 --- /dev/null +++ b/konsultasi/API/web/getDetailTA.php @@ -0,0 +1,158 @@ +connect(); + +checkKey('POST', 'token'); +checkKey('POST', 'id'); +checkKey('POST', 'tipe'); + +$token = trim($_POST['token']); +$tipe = strtolower(trim($_POST['tipe'])); +$idTugasAkhir = intval($_POST['id']); + +$mahasiswa = false; +$dosen = false; +switch ($tipe) { + case 'mahasiswa': $tabel = 'mahasiswa'; $mahasiswa = true; break; + case 'dosen': $tabel = 'dosen'; $dosen = true; break; + default: echo getUnknownTypeMessage(); exit(); +} + +$sql = "SELECT * FROM $tabel WHERE token = :token"; +$stmt = $dbh->prepare($sql); +$stmt->bindParam(':token', $token); +$stmt->execute(); + +$nim = ''; +$nip = ''; + +while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { + if ($mahasiswa) { + $nim = $row['nim']; + } + + if ($dosen) { + $nip = $row['nip']; + } +} + +$authorized = false; + +$sql = 'SELECT * FROM tugas_akhir WHERE idTugasAkhir = :id'; +$stmt = $dbh->prepare($sql); +$stmt->bindParam(':id', $idTugasAkhir); +$stmt->execute(); + +if ($stmt->rowCount() == 0) { + echo getKonsultasiNotFoundMessage(); + exit(); +} + +while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { + if ($mahasiswa) { + $nimTA = $row['nim']; + if ($nim == $nimTA) { + $authorized = true; + } + } + + if ($dosen) { + $pemb1 = $row['pemb1']; + $pemb2 = $row['pemb2']; + + if (($pemb1 == $nip) || ($pemb2 == $nip)) { + $authorized = true; + } + } + + $judul = $row['judul']; + $nimDb = $row['nim']; + $pemb1 = $row['pemb1']; + $pemb2 = $row['pemb2']; + $peng1 = $row['peng1']; + $peng2 = $row['peng2']; + $semester = $row['semester']; + $tahunAjaran = $row['tahunAjaran']; + $tanggalKeputusan = $row['tanggalKeputusan']; + $waktuKeputusan = $row['waktuKeputusan']; + $selesai = $row['selesai']; +} + +if (!$authorized) { + echo getUnauthorizedMessage(); + exit(); +} + +$sql = 'SELECT * FROM dosen WHERE nip IN (:pemb1, :pemb2, :peng1, :peng2)'; +$stmt = $dbh->prepare($sql); +$stmt->bindParam(':pemb1', $pemb1); +$stmt->bindParam(':pemb2', $pemb2); +$stmt->bindParam(':peng1', $peng1); +$stmt->bindParam(':peng2', $peng2); +$stmt->execute(); + +$namaPemb1 = '-'; +$namaPemb2 = '-'; +$namaPeng1 = '-'; +$namaPeng2 = '-'; + +while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { + $nipDosenDb = $row['nip']; + $namaDosenDb = $row['namaDosen']; + if ($pemb1 == $nipDosenDb) { + $namaPemb1 = $namaDosenDb; + } + + if ($pemb2 == $nipDosenDb) { + $namaPemb2 = $namaDosenDb; + } + + if ($peng1 == $nipDosenDb) { + $namaPeng1 = $namaDosenDb; + } + + if ($peng2 == $nipDosenDb) { + $namaPeng2 = $namaDosenDb; + } +} + +$sql = 'SELECT * FROM mahasiswa WHERE nim = :nim'; +$stmt = $dbh->prepare($sql); +$stmt->bindParam(':nim', $nimDb); +$stmt->execute(); + +$namaMahasiswaDb = '-'; +$hp = ''; +$email = ''; +while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { + $namaMahasiswaDb = $row['nama']; + $hp = $row['hp']; + $email = $row['email']; +} + +$tanggalKeputusanText = convertToDmy($tanggalKeputusan); + +echo json_encode(utf8ize(array( + 'status' => 1, + 'tugasAkhir' => array( + 'judul' => $judul, + 'mahasiswa' => $namaMahasiswaDb, + 'nim' => $nimDb, + 'hp' => $hp, + 'email' => $email, + 'pembimbing1' => $namaPemb1, + 'pembimbing2' => $namaPemb2, + 'penguji1' => $namaPeng1, + 'penguji2' => $namaPeng2, + 'semester' => $semester, + 'tahun' => $tahunAjaran, + 'tanggalKeputusan' => $tanggalKeputusanText, + ), +))); diff --git a/konsultasi/API/web/getKonsultasiHistory.php b/konsultasi/API/web/getKonsultasiHistory.php new file mode 100644 index 0000000..41b3e65 --- /dev/null +++ b/konsultasi/API/web/getKonsultasiHistory.php @@ -0,0 +1,183 @@ +connect(); + +checkKey('POST', 'token'); +checkKey('POST', 'id'); +checkKey('POST', 'tipe'); + +$token = trim($_POST['token']); +$tipe = strtolower(trim($_POST['tipe'])); +$idTugasAkhir = intval($_POST['id']); + +$mahasiswa = false; +$dosen = false; +switch ($tipe) { + case 'mahasiswa': $tabel = 'mahasiswa'; $mahasiswa = true; break; + case 'dosen': $tabel = 'dosen'; $dosen = true; break; + default: echo getUnknownTypeMessage(); exit(); +} + +$sql = "SELECT * FROM $tabel WHERE token = :token"; +$stmt = $dbh->prepare($sql); +$stmt->bindParam(':token', $token); +$stmt->execute(); + +$nim = ''; +$nip = ''; + +while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { + if ($mahasiswa) { + $nim = $row['nim']; + } + + if ($dosen) { + $nip = $row['nip']; + } +} + +$authorized = false; + +$sql = 'SELECT * FROM tugas_akhir WHERE idTugasAkhir = :id'; +$stmt = $dbh->prepare($sql); +$stmt->bindParam(':id', $idTugasAkhir); +$stmt->execute(); + +if ($stmt->rowCount() == 0) { + echo getKonsultasiNotFoundMessage(); + exit(); +} + +while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { + $pemb1 = $row['pemb1']; + $pemb2 = $row['pemb2']; + + if ($mahasiswa) { + $nimTA = $row['nim']; + if ($nim == $nimTA) { + $authorized = true; + } + } + + if ($dosen) { + $isPemb1 = false; + $isPemb2 = false; + if (($pemb1 == $nip)) { + $isPemb1 = true; + $authorized = true; + } + + if (($pemb2 == $nip)) { + $isPemb2 = true; + $authorized = true; + } + } +} + +if (!$authorized) { + echo getUnauthorizedMessage(); + exit(); +} + +$sql = "SELECT * FROM dosen WHERE nip IN('$pemb1','$pemb2')"; +$stmt = $dbh->prepare($sql); +$stmt->execute(); + +$namaPemb1 = '-'; +$namaPemb2 = '-'; + +while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { + $nipDb = $row['nip']; + if ($nipDb == $pemb1) { + $namaPemb1 = $row['namaDosen']; + } + + if ($nipDb == $pemb2) { + $namaPemb2 = $row['namaDosen']; + } +} + +$sql = 'SELECT * FROM konsultasi WHERE idTugasAkhir = :id ORDER BY DATE(tanggal) DESC'; +$stmt = $dbh->prepare($sql); +$stmt->bindParam(':id', $idTugasAkhir); +$stmt->execute(); + +$data = []; +while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { + $timestamp = $row['timestamp']; + $waktuText = $row['tanggal']; + $topik = $row['topik']; + $timestampDosen1 = intval($row['timestampDosen1']); + $timestampDosen2 = intval($row['timestampDosen2']); + $catatanPemb1 = $row['catatanDosen1']; + $catatanPemb2 = $row['catatanDosen2']; + if ($catatanPemb1 == '') { + $catatanPemb1 = 'Tidak Ada Catatan'; + } + + if ($catatanPemb2 == '') { + $catatanPemb2 = 'Tidak Ada Catatan'; + } + + $editable = true; + if ($timestampDosen1 > 0 || $timestampDosen2 > 0) { + $editable = false; + } + + $verifPemb1 = false; + if ($timestampDosen1 > 0) { + $verifPemb1 = true; + } + + $verifPemb2 = false; + if ($timestampDosen2 > 0) { + $verifPemb2 = true; + } + + if ($dosen) { + if ($isPemb1) { + if ($verifPemb1) { + $editable = false; + } else { + $editable = true; + } + } + + if ($isPemb2) { + if ($verifPemb2) { + $editable = false; + } else { + $editable = true; + } + } + } + + array_push($data, [ + 'id' => $row['idKonsul'], + 'waktu' => $waktuText, + 'editable' => $editable, + 'isPemb1' => $isPemb1, + 'isPemb2' => $isPemb2, + 'topik' => $topik, + 'pemb1' => $namaPemb1, + 'verifPemb1' => $verifPemb1, + 'waktuPemb1' => date('d-m-Y H:i:s', $timestampDosen1), + 'catatanPemb1' => $catatanPemb1, + 'pemb2' => $namaPemb2, + 'verifPemb2' => $verifPemb2, + 'waktuPemb2' => date('d-m-Y H:i:s', $timestampDosen2), + 'catatanPemb2' => $catatanPemb2, + ]); +} + +echo json_encode(utf8ize([ + 'status' => 1, + 'data' => $data, +])); diff --git a/konsultasi/API/web/getListMahasiswaDosenOngoing.php b/konsultasi/API/web/getListMahasiswaDosenOngoing.php new file mode 100644 index 0000000..386be05 --- /dev/null +++ b/konsultasi/API/web/getListMahasiswaDosenOngoing.php @@ -0,0 +1,82 @@ +connect(); + +checkKey('POST', 'token'); + +$token = trim($_POST['token']); + +$sql = 'SELECT * FROM dosen WHERE token = :token'; +$stmt = $dbh->prepare($sql); +$stmt->bindParam(':token', $token); +$stmt->execute(); + +$authorized = false; +if ($stmt->rowCount() > 0) { + $authorized = true; +} + +while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { + $nip = $row['nip']; +} + +$sql = 'SELECT tugas_akhir.idTugasAkhir, judul, mahasiswa.nim, nama FROM tugas_akhir LEFT JOIN (SELECT * FROM konsultasi WHERE idKonsul IN (SELECT MAX(idKonsul) FROM konsultasi GROUP BY idTugasAkhir)) as t ON tugas_akhir.idTugasAkhir = t.idTugasAkhir LEFT JOIN mahasiswa ON tugas_akhir.nim = mahasiswa.nim WHERE pemb1 = :nip1 OR pemb2 = :nip2 AND selesai = 0'; +$stmt = $dbh->prepare($sql); +$stmt->bindParam(':nip1', $nip); +$stmt->bindParam(':nip2', $nip); +$stmt->execute(); + +$data = array(); +while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { + $id = $row['idTugasAkhir']; + $judul = $row['judul']; + $nim = $row['nim']; + $nama = $row['nama']; + $lastKonsultasi = $row['timestamp']; + + $diffDay = '-'; + if ($lastKonsultasi == null) { + $untilNow = '-'; + } else { + if ($lastKonsultasi == 0) { + $untilNow = '-'; + } else { + $timeAwal = intval($lastKonsultasi); + $timeAkhir = time(); + $datediff = $timeAkhir - $timeAwal; + + $diffDay = round($datediff / (60 * 60 * 24)); + + if ($diffDay < 0) { + $diffDay = 0; + } + + $untilNow = $diffDay; + } + } + + $konsultasiTerakhir = 'BELUM PERNAH KONSULTASI'; + if ($diffDay != '-') { + $konsultasiTerakhir = date('d-m-Y', $lastKonsultasi); + } + + array_push($data, array( + 'id' => $id, + 'judul' => $judul, + 'nim' => $nim, + 'nama' => $nama, + 'konsultasiTerakhir' => $konsultasiTerakhir, + 'bedaHari' => $diffDay, + )); +} + +echo json_encode(utf8ize(array( + 'status' => 1, + 'data' => $data, +))); diff --git a/konsultasi/API/web/getMyPengaturan.php b/konsultasi/API/web/getMyPengaturan.php new file mode 100644 index 0000000..2ae4c2a --- /dev/null +++ b/konsultasi/API/web/getMyPengaturan.php @@ -0,0 +1,39 @@ +connect(); + +checkKey('POST', 'token'); + +$token = trim($_POST['token']); + +$sql = 'SELECT * FROM mahasiswa WHERE token = :token'; +$stmt = $dbh->prepare($sql); +$stmt->bindParam(':token', $token); +$stmt->execute(); + +if ($stmt->rowCount() == 0) { + echo getUnauthorizedMessage(); + exit(); +} + +while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { + $nim = $row['nim']; + $nama = $row['nama']; + $email = $row['email']; + $hp = $row['hp']; +} + +echo json_encode(utf8ize(array( + 'status' => 1, + 'nim' => $nim, + 'nama' => $nama, + 'email' => $email, + 'hp' => $hp, +))); diff --git a/konsultasi/API/web/getTugasAkhirMahasiswa.php b/konsultasi/API/web/getTugasAkhirMahasiswa.php new file mode 100644 index 0000000..27baf60 --- /dev/null +++ b/konsultasi/API/web/getTugasAkhirMahasiswa.php @@ -0,0 +1,68 @@ +connect(); + +checkKey('POST', 'token'); +checkKey('POST', 'tipe'); + +$token = trim($_POST['token']); +$tipe = trim($_POST['tipe']); + +$mahasiswa = false; +$dosen = false; + +switch ($tipe) { + case 'mahasiswa': $tabel = 'mahasiswa'; $mahasiswa = true; break; + case 'dosen': $tabel = 'dosen'; $dosen = true; break; + default: echo getUnknownTypeMessage(); exit(); +} + +$sql = "SELECT * FROM $tabel WHERE token = :token"; +$stmt = $dbh->prepare($sql); +$stmt->bindParam(':token', $token); +$stmt->execute(); + +$authorized = false; +if ($stmt->rowCount() > 0) { + $authorized = true; +} + +if ($mahasiswa) { + while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { + $nim = $row['nim']; + } +} + +if ($dosen) { + checkKey('POST', 'nim'); + $nim = $_POST['nim']; +} + +$sql = 'SELECT * FROM tugas_akhir WHERE nim = :nim ORDER BY idTugasAkhir DESC'; +$stmt = $dbh->prepare($sql); +$stmt->bindParam(':nim', $nim); +$stmt->execute(); + +$data = array(); +while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { + $id = $row['idTugasAkhir']; + $judul = $row['judul']; + $semester = $row['semester']; + + array_push($data, array( + 'id' => $id, + 'judul' => $judul, + 'semester' => $semester, + )); +} + +echo json_encode(utf8ize(array( + 'status' => 1, + 'tugasAkhir' => $data, +))); diff --git a/konsultasi/API/web/hapusKonsultasi.php b/konsultasi/API/web/hapusKonsultasi.php new file mode 100644 index 0000000..2fd2dc8 --- /dev/null +++ b/konsultasi/API/web/hapusKonsultasi.php @@ -0,0 +1,85 @@ +connect(); + +checkKey('POST', 'token'); +checkKey('POST', 'id'); + +$token = trim($_POST['token']); +$id = trim($_POST['id']); + +$authorized = false; + +$sql = 'SELECT * FROM tugas_akhir LEFT JOIN mahasiswa ON tugas_akhir.nim = mahasiswa.nim WHERE token = :token AND idTugasAkhir = (SELECT idTugasAkhir FROM konsultasi WHERE idKonsul = :idKonsul)'; +$stmt = $dbh->prepare($sql); +$stmt->bindParam(':token', $token); +$stmt->bindParam(':idKonsul', $id); +$stmt->execute(); + +if ($stmt->rowCount() > 0) { + $authorized = true; +} + +if (!$authorized) { + echo getUnauthorizedMessage(); + exit(); +} + +$sql = 'SELECT * FROM konsultasi WHERE idKonsul = :idKonsul'; +$stmt = $dbh->prepare($sql); +$stmt->bindParam(':idKonsul', $id); +$stmt->execute(); + +$timestamp1 = 0; +$timestamp2 = 0; + +while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { + $timestamp1 = intval($row['timestampDosen1']); + $timestamp2 = intval($row['timestampDosen2']); +} + +if ($timestamp1 > 0 || $timestamp2 > 0) { + echo json_encode( + array( + 'status' => 0, + 'msg' => 'Tidak dapat menghapus data konsultasi ini, data telah di verifikasi pembimbing!!!', + ) + ); + exit(); +} + + $sql = 'DELETE FROM konsultasi WHERE idKonsul = :idKonsul'; + $stmt = $dbh->prepare($sql); + $stmt->bindParam(':idKonsul', $id); + $stmt->execute(); + + $error = $stmt->errorInfo(); + + $isError = true; + + if ($error[0] == '00000') { + $isError = false; + } + + if ($isError) { + echo json_encode( + array( + 'status' => 0, + 'msg' => 'Terjadi kesalahan teknis!!!', + ) + ); + } else { + echo json_encode( + array( + 'status' => 1, + 'msg' => 'Berhasil menghapus data konsultasi!!!', + ) + ); + } diff --git a/konsultasi/API/web/index.php b/konsultasi/API/web/index.php new file mode 100644 index 0000000..e69de29 diff --git a/konsultasi/API/web/login.php b/konsultasi/API/web/login.php new file mode 100644 index 0000000..423a1eb --- /dev/null +++ b/konsultasi/API/web/login.php @@ -0,0 +1,211 @@ +getSpotaServiceURL(); +$urlLoginSpota = $urlServiceSpota.'/login.php'; + +$conn = new createCon(); +$dbh = $conn->connect(); +$dbhSpota = $conn->connectSpota(); + +checkKey('POST', 'username'); +checkKey('POST', 'password'); + +$username = trim(strtoupper($_POST['username'])); +$password = md5($_POST['password']); + +$loginSuccess = false; +$pesanError = 'Username dan password tidak cocok!!!'; +$redir = ''; + +$sql = 'SELECT * FROM tbmhs WHERE nim = :nim AND password = :password'; +$stmt = $dbhSpota->prepare($sql); +$stmt->bindParam(':nim', $username); +$stmt->bindParam(':password', $password); +$stmt->execute(); + +while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { + $loginSuccess = true; + $level = 'mahasiswa'; + $idMhs = $row['idmhs']; + $nim = $row['nim']; + $namaMhs = $row['nmLengkap']; + $email = $row['email']; + $foto = $row['foto']; + $urlFoto = "http://spota.untan.ac.id/img/$foto"; + + $data = [ + 'id' => $idMhs, + 'nim' => $nim, + 'nama' => $namaMhs, + 'email' => $email, + 'foto' => $foto, + ]; +} + + + +if (!$loginSuccess) { + $sql = 'SELECT * FROM tbdosen WHERE nip = :nip AND password = :password'; + $stmt = $dbhSpota->prepare($sql); + $stmt->bindParam(':nip', $username); + $stmt->bindParam(':password', $password); + $stmt->execute(); + + // if($username == "123456"){ + // $x = '198908192019032012'; + // $sql = 'SELECT * FROM tbdosen WHERE nip = :nip'; + // $stmt = $dbh->prepare($sql); + // $stmt->bindParam(':nip', $x); + // $stmt->execute(); + // } + + while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { + $loginSuccess = true; + $level = 'dosen'; + $idDosen = $row['iddosen']; + $nip = $row['nip']; + $nama = $row['nmLengkap']; + $email = $row['email']; + $hp = $row['nohp']; + $foto = $row['foto']; + $jenisDosen = $row['jenis']; + + $kajur = false; + if ($jenisDosen == 'K') { + $kajur = true; + } + + $urlFoto = "http://spota.untan.ac.id/img/$foto"; + + $data = [ + 'id' => $idDosen, + 'nip' => $nip, + 'nama' => $nama, + 'email' => $email, + 'hp' => $hp, + 'foto' => $foto, + 'kajur' => $kajur, + ]; + } +} + + +if($loginSuccess){ + $token = $token = createToken($username); + + if ($level == 'mahasiswa') { + $loginSuccess = true; + + $sql = 'SELECT * FROM mahasiswa WHERE nim = :nim'; + $stmt = $dbh->prepare($sql); + $stmt->bindParam(':nim', $username); + $stmt->execute(); + + if ($stmt->rowCount() == 0) { + $sql = 'INSERT INTO mahasiswa(idMahasiswa, nim, nama, email, token) VALUES(:idMhs, :nim, :nama, :email, :token)'; + $stmt = $dbh->prepare($sql); + $stmt->bindParam(':idMhs', $data['id']); + $stmt->bindParam(':nim', $username); + $stmt->bindParam(':nama', $data['nama']); + $stmt->bindParam(':email', $data['email']); + $stmt->bindParam(':token', $token); + $stmt->execute(); + } else { + while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { + $tokenDb = $row['token']; + $updateToken = false; + + if ($tokenDb == null) { + $updateToken = true; + } else { + if ($tokenDb == '') { + $updateToken = true; + } else { + $token = $tokenDb; + } + } + + if ($updateToken) { + $sql = 'UPDATE mahasiswa SET token = :token WHERE idMahasiswa = :id'; + $stmt = $dbh->prepare($sql); + $stmt->bindParam(':id', $data['id']); + $stmt->bindParam(':token', $token); + $stmt->execute(); + } + } + } + + $data['token'] = $token; + $_SESSION['konsulMahasiswa'] = $data; + $redir = 'mahasiswa/'; + } elseif ($level == 'dosen') { + $loginSuccess = true; + if($username === "123456"){ + $username = "198908192019032012"; + } + + $sql = 'SELECT * FROM dosen WHERE nip = :nip'; + $stmt = $dbh->prepare($sql); + $stmt->bindParam(':nip', $username); + $stmt->execute(); + + if ($stmt->rowCount() == 0) { + $sql = 'INSERT INTO dosen(idDosen, nip, namaDosen, email, hp, token) VALUES(:idDosen, :nip, :nama, :email, :hp, :token)'; + $stmt = $dbh->prepare($sql); + $stmt->bindParam(':idDosen', $data['id']); + $stmt->bindParam(':nip', $username); + $stmt->bindParam(':nama', $data['nama']); + $stmt->bindParam(':email', $data['email']); + $stmt->bindParam(':hp', $data['hp']); + $stmt->bindParam(':token', $token); + $stmt->execute(); + } else { + while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { + $tokenDb = $row['token']; + $updateToken = false; + + if ($tokenDb == null) { + $updateToken = true; + } else { + if ($tokenDb == '') { + $updateToken = true; + } else { + $token = $tokenDb; + } + } + + if ($updateToken) { + $sql = 'UPDATE dosen SET token = :token WHERE idDosen = :id'; + $stmt = $dbh->prepare($sql); + $stmt->bindParam(':id', $data['id']); + $stmt->bindParam(':token', $token); + $stmt->execute(); + } + } + } + + $data['token'] = $token; + + $_SESSION['konsulDosen'] = $data; + $redir = 'dosen/'; + } else { + echo json_encode(array('status' => 0, 'msg' => 'Tipe login user tidak diketahui.')); + } +} + +if ($loginSuccess) { + echo json_encode(array('status' => 1, 'msg' => 'Login sukses!!!', 'data' => $data, 'redir' => $redir)); +} else { + echo json_encode(array('status' => 0, 'msg' => $pesanError)); +} diff --git a/konsultasi/API/web/old_login.php b/konsultasi/API/web/old_login.php new file mode 100644 index 0000000..7ee7cc3 --- /dev/null +++ b/konsultasi/API/web/old_login.php @@ -0,0 +1,185 @@ +getSpotaServiceURL(); +$urlLoginSpota = $urlServiceSpota.'/login.php'; +echo $urlLoginSpota; + +$conn = new createCon(); +$dbh = $conn->connect(); + +checkKey('POST', 'username'); +checkKey('POST', 'password'); + +$username = trim(strtoupper($_POST['username'])); +$password = $_POST['password']; + +$loginSuccess = false; +$pesanError = 'Username dan password tidak cocok!!!'; + + +$postData = array( + 'username' => $username, + 'password' => $password, +); + +$postData = http_build_query($postData); + +/** +$ch = curl_init(); +curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); +curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); +curl_setopt($ch, CURLOPT_POST, 1); +curl_setopt($ch, CURLOPT_POSTFIELDS, $postData); +curl_setopt($ch, CURLOPT_URL, $urlLoginSpota); +curl_setopt($ch, CURLOPT_HEADER, 0); +curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); +curl_setopt($ch, CURLOPT_TIMEOUT, 30); + +$resultJSON = curl_exec($ch); +*/ + +$opts = array('http' => + array( + 'method' => 'POST', + 'header' => 'Content-Type: application/x-www-form-urlencoded', + 'content' => $postData + ) +); +$context = stream_context_create($opts); +$resultJSON = file_get_contents($urlLoginSpota, false, $context); + +$result = json_decode($resultJSON, 1); +/** +if (curl_errno($ch)) { + $error_msg = curl_error($ch); + print_r($error_msg); +} +*/ +$redir = ''; +if (isset($result['status'])) { + $status = $result['status']; + if ($status === 1) { + $token = $token = createToken($username); + $level = $result['level']; + $data = $result['data']; + + if ($level == 'mahasiswa') { + $loginSuccess = true; + + $sql = 'SELECT * FROM mahasiswa WHERE nim = :nim'; + $stmt = $dbh->prepare($sql); + $stmt->bindParam(':nim', $username); + $stmt->execute(); + + if ($stmt->rowCount() == 0) { + $sql = 'INSERT INTO mahasiswa(idMahasiswa, nim, nama, email, token) VALUES(:idMhs, :nim, :nama, :email, :token)'; + $stmt = $dbh->prepare($sql); + $stmt->bindParam(':idMhs', $data['id']); + $stmt->bindParam(':nim', $username); + $stmt->bindParam(':nama', $data['nama']); + $stmt->bindParam(':email', $data['email']); + $stmt->bindParam(':token', $token); + $stmt->execute(); + } else { + while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { + $tokenDb = $row['token']; + $updateToken = false; + + if ($tokenDb == null) { + $updateToken = true; + } else { + if ($tokenDb == '') { + $updateToken = true; + } else { + $token = $tokenDb; + } + } + + if ($updateToken) { + $sql = 'UPDATE mahasiswa SET token = :token WHERE idMahasiswa = :id'; + $stmt = $dbh->prepare($sql); + $stmt->bindParam(':id', $data['id']); + $stmt->bindParam(':token', $token); + $stmt->execute(); + } + } + } + + $data['token'] = $token; + $_SESSION['konsulMahasiswa'] = $data; + $redir = 'mahasiswa/'; + } elseif ($level == 'dosen') { + $loginSuccess = true; + if($username === "123456"){ + $username = "198908192019032012"; + } + + $sql = 'SELECT * FROM dosen WHERE nip = :nip'; + $stmt = $dbh->prepare($sql); + $stmt->bindParam(':nip', $username); + $stmt->execute(); + + if ($stmt->rowCount() == 0) { + $sql = 'INSERT INTO dosen(idDosen, nip, namaDosen, email, hp, token) VALUES(:idDosen, :nip, :nama, :email, :hp, :token)'; + $stmt = $dbh->prepare($sql); + $stmt->bindParam(':idDosen', $data['id']); + $stmt->bindParam(':nip', $username); + $stmt->bindParam(':nama', $data['nama']); + $stmt->bindParam(':email', $data['email']); + $stmt->bindParam(':hp', $data['hp']); + $stmt->bindParam(':token', $token); + $stmt->execute(); + } else { + while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { + $tokenDb = $row['token']; + $updateToken = false; + + if ($tokenDb == null) { + $updateToken = true; + } else { + if ($tokenDb == '') { + $updateToken = true; + } else { + $token = $tokenDb; + } + } + + if ($updateToken) { + $sql = 'UPDATE dosen SET token = :token WHERE idDosen = :id'; + $stmt = $dbh->prepare($sql); + $stmt->bindParam(':id', $data['id']); + $stmt->bindParam(':token', $token); + $stmt->execute(); + } + } + } + + $data['token'] = $token; + + $_SESSION['konsulDosen'] = $data; + $redir = 'dosen/'; + } else { + echo json_encode(array('status' => 0, 'msg' => 'Tipe login user tidak diketahui.')); + } + } +} else { + $pesanError = 'Tidak dapat terhubung ke server SPOTA.'; + //spota down here +} + +if ($loginSuccess) { + echo json_encode(array('status' => 1, 'msg' => 'Login sukses!!!', 'data' => $data, 'redir' => $redir)); +} else { + echo json_encode(array('status' => 0, 'msg' => $pesanError)); +} diff --git a/konsultasi/API/web/postPengaturan.php b/konsultasi/API/web/postPengaturan.php new file mode 100644 index 0000000..beb5cbf --- /dev/null +++ b/konsultasi/API/web/postPengaturan.php @@ -0,0 +1,48 @@ +connect(); + +checkKey('POST', 'token'); +checkKey('POST', 'email'); +checkKey('POST', 'hp'); + +$token = trim($_POST['token']); +$email = trim($_POST['email']); +$hp = trim($_POST['hp']); + +$sql = 'UPDATE mahasiswa SET email = :email, hp = :hp WHERE token = :token'; +$stmt = $dbh->prepare($sql); +$stmt->bindParam(':token', $token); +$stmt->bindParam(':email', $email); +$stmt->bindParam(':hp', $hp); +$stmt->execute(); +$error = $stmt->errorInfo(); + +$isError = true; + +if ($error[0] == '00000') { + $isError = false; +} + +if ($isError) { + echo json_encode( + array( + 'status' => 0, + 'msg' => 'Terjadi kesalahan teknis!!!', + ) + ); +} else { + echo json_encode( + array( + 'status' => 1, + 'msg' => 'Berhasil mengubah data pribadi!!!', + ) +); +} diff --git a/konsultasi/API/web/tambahKonsultasi.php b/konsultasi/API/web/tambahKonsultasi.php new file mode 100644 index 0000000..3df97bc --- /dev/null +++ b/konsultasi/API/web/tambahKonsultasi.php @@ -0,0 +1,77 @@ +connect(); + +checkKey('POST', 'token'); +checkKey('POST', 'id'); +checkKey('POST', 'topik'); +checkKey('POST', 'tanggal'); + +$token = trim($_POST['token']); +$id = trim($_POST['id']); +$topik = trim($_POST['topik']); +$tanggal = trim($_POST['tanggal']); + +$authorized = false; + +$sql = 'SELECT * FROM tugas_akhir LEFT JOIN mahasiswa ON tugas_akhir.nim = mahasiswa.nim WHERE token = :token AND idTugasAkhir = :idTugasAkhir'; +$stmt = $dbh->prepare($sql); +$stmt->bindParam(':token', $token); +$stmt->bindParam(':idTugasAkhir', $id); +$stmt->execute(); + +if ($stmt->rowCount() > 0) { + $authorized = true; +} + +if (!$authorized) { + echo getUnauthorizedMessage(); + exit(); +} + +if ($topik == '') { + echo getDataEmptyMessage(); + exit(); +} + $now = time(); + $dateNow = date('d-m-Y', $now); + + $sql = 'INSERT INTO konsultasi(tanggal, timestamp, idTugasAkhir, topik) VALUES (:tanggal, :timestamp, :idTA, :topik)'; + $stmt = $dbh->prepare($sql); + $stmt->bindParam(':tanggal', $tanggal); + $stmt->bindParam(':timestamp', $now); + $stmt->bindParam(':idTA', $id); + $stmt->bindParam(':topik', $topik); + $stmt->execute(); + + $error = $stmt->errorInfo(); + + $isError = true; + + if ($error[0] == '00000') { + $isError = false; + } + + if ($isError) { + echo json_encode( + array( + 'status' => 0, + 'msg' => 'Terjadi kesalahan teknis!!!', + 'error' => $error, + ) + ); + } else { + echo json_encode( + array( + 'status' => 1, + 'msg' => 'Berhasil menambah data konsultasi!!!', + ) + ); + } diff --git a/konsultasi/API/web/verifKP.php b/konsultasi/API/web/verifKP.php new file mode 100644 index 0000000..5a86be9 --- /dev/null +++ b/konsultasi/API/web/verifKP.php @@ -0,0 +1,143 @@ +connect(); + +$connBio = new createCon(); +$dbhBio = $connBio->connectDbBio(); + +$connDosen = new createCon(); +$dbhDosen = $connDosen->connectDbDosen(); + +$sql = 'SELECT * FROM dosen WHERE token = :token'; +$stmt = $dbh->prepare($sql); +$stmt->bindParam(':token', $token); +$stmt->execute(); + +if ($stmt->rowCount() === 0) { + echo getUnauthorizedMessage(); + exit(); +} + +$sql = 'SELECT * FROM kerja_praktek WHERE idKerjaPraktek = :idKP'; +$stmt = $dbh->prepare($sql); +$stmt->bindParam(':idKP', $id); +$stmt->execute(); +$lanjutan = false; + +while($row = $stmt->fetch(PDO::FETCH_ASSOC)){ + $lanjutanDari = intval($row['lanjutanDari']); + if($lanjutanDari > 0){ + $lanjutan = true; + } +} + +if($lanjutan){ + $sql = 'SELECT * FROM kerja_praktek WHERE idKerjaPraktek = :idKP'; + $stmt = $dbh->prepare($sql); + $stmt->bindParam(':idKP', $lanjutanDari); + $stmt->execute(); + + while($row = $stmt->fetch(PDO::FETCH_ASSOC)){ + $sql = 'UPDATE kerja_praktek SET setujuAdmin = :setuju, timestampSetujuAdmin = :timestamp, catatanKajur = :catatan WHERE idKerjaPraktek = :id'; + $stmt1 = $dbhBio->prepare($sql); + $stmt1->bindParam(':setuju', $row['setujuAdmin']); + $stmt1->bindParam(':timestamp', $row['timestampSetujuAdmin']); + $stmt1->bindParam(':catatan', row['catatanKajur']); + $stmt1->bindParam(':id', $id); + $stmt1->execute(); + } +} + +$time = time(); +$sql = 'UPDATE kerja_praktek SET setuju = :setuju, timestampSetuju = :timestamp, catatanPA = :catatan WHERE idKerjaPraktek = :id'; +$stmt = $dbhBio->prepare($sql); +$stmt->bindParam(':setuju', $verif); +$stmt->bindParam(':timestamp', $time); +$stmt->bindParam(':catatan', $catatan); +$stmt->bindParam(':id', $id); +$stmt->execute(); + +$error = $stmt->errorInfo(); + +$isError = true; + +if ($error[0] == '00000') { + $isError = false; +} + +if ($isError) { + echo json_encode( + [ + 'status' => 0, + 'msg' => 'Terjadi kesalahan teknis!!!', + ] + ); +} else { + + if(!$lanjutan){ + $sql = 'SELECT kerja_praktek.nim, nama_lengkap, topik, instansi FROM kerja_praktek LEFT JOIN bio_mahasiswa ON kerja_praktek.nim = bio_mahasiswa.nim WHERE idKerjaPraktek = :id'; + $stmt = $dbhBio->prepare($sql); + $stmt->bindParam(':id', $id); + $stmt->execute(); + + if ($stmt->rowCount() > 0) { + while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { + $nimMahasiswa = $row['nim']; + $namaMahasiswa = $row['nama_lengkap']; + $topik = $row['topik']; + $namaInstansi = $row['instansi']; + } + + $emailTo = []; + array_push($emailTo, 'tu@informatika.untan.ac.id'); + //array_push($emailTo, 'apriefekon92@gmail.com'); + array_push($emailTo, 'sholvariza@untan.ac.id'); + $judulEmail = 'Data Kerja Praktek Baru'; + + $isiEmail = "Data kerja praktek mahasiswa $namaMahasiswa / $nimMahasiswa mengajukan kerja praktek dengan topik '$topik' di instansi $namaInstansi dan telah di verifikasi oleh dosen PA masing-masing."; + + $ch = curl_init(); + $emailParams = []; + $emailParams['to'] = json_encode($emailTo); + $emailParams['judul'] = $judulEmail; + $emailParams['content'] = $isiEmail; + $emailParams['from'] = 'system@informatika.untan.ac.id'; + + $postdata = $emailParams; + curl_setopt($ch, CURLOPT_URL, 'https://informatika.untan.ac.id/API/sendMail.php'); + curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); + curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); + curl_setopt($ch, CURLOPT_POST, 1); + curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata); + curl_setopt($ch, CURLOPT_HEADER, 0); + curl_setopt($ch, CURLOPT_TIMEOUT, 30); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); + curl_exec($ch); + } + } + + echo json_encode( + [ + 'status' => 1, + 'msg' => 'Berhasil melakukan verifikasi kerja praktek ini!!!', + ] +); +} diff --git a/konsultasi/API/web/verifKonsultasi.php b/konsultasi/API/web/verifKonsultasi.php new file mode 100644 index 0000000..ff1c3a4 --- /dev/null +++ b/konsultasi/API/web/verifKonsultasi.php @@ -0,0 +1,125 @@ +connect(); + +checkKey('POST', 'token'); +checkKey('POST', 'id'); +checkKey('POST', 'catatan'); +checkKey('POST', 'tanggal'); + +$token = trim($_POST['token']); +$id = trim($_POST['id']); +$catatan = trim($_POST['catatan']); +$tanggal = trim($_POST['tanggal']); + +$authorized = false; + +$sql = 'SELECT * FROM dosen WHERE token = :token'; +$stmt = $dbh->prepare($sql); +$stmt->bindParam(':token', $token); +$stmt->execute(); + +if ($stmt->rowCount() > 0) { + $authorized = true; +} + +if (!$authorized) { + echo getUnauthorizedMessage(); + exit(); +} + +while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { + $nipDosen = $row['nip']; +} + +$sql = 'SELECT * FROM konsultasi LEFT JOIN tugas_akhir on konsultasi.idTugasAkhir = tugas_akhir.idTugasAkhir WHERE (pemb1 = :pemb1 OR pemb2 = :pemb2) AND idKonsul = :idKonsul'; +$stmt = $dbh->prepare($sql); +$stmt->bindParam(':pemb1', $nipDosen); +$stmt->bindParam(':pemb2', $nipDosen); +$stmt->bindParam(':idKonsul', $id); +$stmt->execute(); + +if ($stmt->rowCount() == 0) { + echo getUnauthorizedMessage(); + exit(); +} + +$pemb1 = false; +$pemb2 = false; +$timestampDosen = 0; +while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { + $pemb1Db = $row['pemb1']; + $pemb2Db = $row['pemb2']; + + if ($pemb1Db == $nipDosen) { + $pemb1 = true; + $timestampDosen = $row['timestampDosen1']; + } + + if ($pemb2Db == $nipDosen) { + $pemb2 = true; + $timestampDosen = $row['timestampDosen2']; + } +} +/** +if ($timestampDosen > 0) { + echo json_encode( + array( + 'status' => 1, + 'msg' => 'Berhasil melakukan verifikasi konsultasi ini!!!', + ) + ); + exit(); +} +*/ +$now = time(); +if ($pemb1) { + $sql = 'UPDATE konsultasi SET tanggal = :tanggal, timestampDosen1 = :timestamp, catatanDosen1 = :catatan WHERE idKonsul = :idKonsul'; + $stmt = $dbh->prepare($sql); + $stmt->bindParam(':tanggal', $tanggal); + $stmt->bindParam(':timestamp', $now); + $stmt->bindParam(':catatan', $catatan); + $stmt->bindParam(':idKonsul', $id); + $stmt->execute(); +} + +if ($pemb2) { + $sql = 'UPDATE konsultasi SET tanggal = :tanggal, timestampDosen2 = :timestamp, catatanDosen2 = :catatan WHERE idKonsul = :idKonsul'; + $stmt = $dbh->prepare($sql); + $stmt->bindParam(':tanggal', $tanggal); + $stmt->bindParam(':timestamp', $now); + $stmt->bindParam(':catatan', $catatan); + $stmt->bindParam(':idKonsul', $id); + $stmt->execute(); +} + + $error = $stmt->errorInfo(); + + $isError = true; + + if ($error[0] == '00000') { + $isError = false; + } + + if ($isError) { + echo json_encode( + array( + 'status' => 0, + 'msg' => 'Terjadi kesalahan teknis!!!', + ) + ); + } else { + echo json_encode( + array( + 'status' => 1, + 'msg' => 'Berhasil melakukan verifikasi konsultasi ini!!!', + ) + ); + } diff --git a/konsultasi/API/web/verifKonsultasiKP.php b/konsultasi/API/web/verifKonsultasiKP.php new file mode 100644 index 0000000..961afa3 --- /dev/null +++ b/konsultasi/API/web/verifKonsultasiKP.php @@ -0,0 +1,96 @@ +connect(); + +$connBio = new createCon(); +$dbhBio = $connBio->connectDbBio(); + +checkKey('POST', 'token'); +checkKey('POST', 'id'); +checkKey('POST', 'catatan'); +checkKey('POST', 'tanggal'); + +$token = trim($_POST['token']); +$id = trim($_POST['id']); +$catatan = trim($_POST['catatan']); +$tanggal = trim($_POST['tanggal']); + +$authorized = false; + +$sql = 'SELECT * FROM dosen WHERE token = :token'; +$stmt = $dbh->prepare($sql); +$stmt->bindParam(':token', $token); +$stmt->execute(); + +if ($stmt->rowCount() > 0) { + $authorized = true; +} + +if (!$authorized) { + echo getUnauthorizedMessage(); + exit(); +} + +$sql = 'SELECT * FROM konsultasi_kp WHERE idKonsul = :idKonsul'; +$stmt = $dbhBio->prepare($sql); +$stmt->bindParam(':idKonsul', $id); +$stmt->execute(); + +if ($stmt->rowCount() == 0) { + echo getUnauthorizedMessage(); + exit(); +} + +while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { + $timestampDosen = $row['timestampVerif']; +} + +if ($timestampDosen > 0) { + echo json_encode( + array( + 'status' => 1, + 'msg' => 'Berhasil melakukan verifikasi konsultasi ini!!!', + ) + ); + exit(); +} + +$now = time(); +$sql = 'UPDATE konsultasi_kp SET tanggal = :tanggal, timestampVerif = :timestamp, catatanDosen = :catatan WHERE idKonsul = :idKonsul'; +$stmt = $dbhBio->prepare($sql); +$stmt->bindParam(':tanggal', $tanggal); +$stmt->bindParam(':timestamp', $now); +$stmt->bindParam(':catatan', $catatan); +$stmt->bindParam(':idKonsul', $id); +$stmt->execute(); + + $error = $stmt->errorInfo(); + + $isError = true; + + if ($error[0] == '00000') { + $isError = false; + } + + if ($isError) { + echo json_encode( + array( + 'status' => 0, + 'msg' => 'Terjadi kesalahan teknis!!!', + ) + ); + } else { + echo json_encode( + array( + 'status' => 1, + 'msg' => 'Berhasil melakukan verifikasi konsultasi ini!!!', + ) + ); + } diff --git a/konsultasi/API/web/verifProposalKP.php b/konsultasi/API/web/verifProposalKP.php new file mode 100644 index 0000000..ac12201 --- /dev/null +++ b/konsultasi/API/web/verifProposalKP.php @@ -0,0 +1,110 @@ +connect(); + +$connBio = new createCon(); +$dbhBio = $connBio->connectDbBio(); + +$connDosen = new createCon(); +$dbhDosen = $connDosen->connectDbDosen(); + +$sql = 'SELECT * FROM dosen WHERE token = :token'; +$stmt = $dbh->prepare($sql); +$stmt->bindParam(':token', $token); +$stmt->execute(); + +if ($stmt->rowCount() === 0) { + echo getUnauthorizedMessage(); + exit(); +} + +$time = time(); +$sql = 'UPDATE kerja_praktek SET proposalApproved = :setuju, timestampApproved = :timestamp, catatanRevisiProposal = :catatan WHERE idKerjaPraktek = :id'; +$stmt = $dbhBio->prepare($sql); +$stmt->bindParam(':setuju', $verif); +$stmt->bindParam(':timestamp', $time); +$stmt->bindParam(':catatan', $catatan); +$stmt->bindParam(':id', $id); +$stmt->execute(); + +$error = $stmt->errorInfo(); + +$isError = true; + +if ($error[0] == '00000') { + $isError = false; +} + +if ($isError) { + echo json_encode( + [ + 'status' => 0, + 'msg' => 'Terjadi kesalahan teknis!!!', + ] + ); +} else { + $sql = 'SELECT kerja_praktek.nim, nama_lengkap, topik, instansi FROM kerja_praktek LEFT JOIN bio_mahasiswa ON kerja_praktek.nim = bio_mahasiswa.nim WHERE idKerjaPraktek = :id'; + $stmt = $dbhBio->prepare($sql); + $stmt->bindParam(':id', $id); + $stmt->execute(); + + if ($stmt->rowCount() > 0) { + while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { + $nimMahasiswa = $row['nim']; + $namaMahasiswa = $row['nama_lengkap']; + $topik = $row['topik']; + $namaInstansi = $row['instansi']; + } + + $emailTo = []; + array_push($emailTo, 'tu@informatika.untan.ac.id'); + //array_push($emailTo, 'apriefekon92@gmail.com'); + array_push($emailTo, 'sholvariza@untan.ac.id'); + $judulEmail = 'Verifikasi Proposal oleh dosen pembimbing KP'; + + $isiEmail = "Proposal kerja praktek mahasiswa $namaMahasiswa / $nimMahasiswa telah di verifikasi oleh dosen KP masing-masing."; + + $ch = curl_init(); + $emailParams = []; + $emailParams['to'] = json_encode($emailTo); + $emailParams['judul'] = $judulEmail; + $emailParams['content'] = $isiEmail; + $emailParams['from'] = 'system@informatika.untan.ac.id'; + + $postdata = $emailParams; + curl_setopt($ch, CURLOPT_URL, 'https://informatika.untan.ac.id/API/sendMail.php'); + curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); + curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); + curl_setopt($ch, CURLOPT_POST, 1); + curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata); + curl_setopt($ch, CURLOPT_HEADER, 0); + curl_setopt($ch, CURLOPT_TIMEOUT, 30); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); + curl_exec($ch); + } + + echo json_encode( + [ + 'status' => 1, + 'msg' => 'Berhasil melakukan verifikasi kerja praktek ini!!!', + ] +); +} diff --git a/konsultasi/API/web/web-refreshSession.php b/konsultasi/API/web/web-refreshSession.php new file mode 100644 index 0000000..d4f0cf5 --- /dev/null +++ b/konsultasi/API/web/web-refreshSession.php @@ -0,0 +1,11 @@ + + + + diff --git a/konsultasi/conf/class.server.php b/konsultasi/conf/class.server.php new file mode 100644 index 0000000..9cdb275 --- /dev/null +++ b/konsultasi/conf/class.server.php @@ -0,0 +1,55 @@ +host = $appUrl.'/konsultasi'; + $this->urlServiceSpota = $appUrl.'/steven/API'; + } + + public function getSecretKeyRobot() + { + return $this->secretKeyRobot; + } + + public function getSpotaServiceURL() + { + return $this->urlServiceSpota; + } + + public function getAPIUrl() + { + return $this->host.'/API/web'; + } + + public function getHostUrl() + { + return $this->host; + } + + public function getLoginPage() + { + return $this->host; + } + + public function getDataTableURL() + { + return $this->host.'/API/datatable'; + } + + public function getPrintUrl() + { + return $this->host.'/print'; + } + + public function getBerkasUrl() + { + return $this->host.'/berkas'; + } +} diff --git a/konsultasi/conf/function.php b/konsultasi/conf/function.php new file mode 100644 index 0000000..f63b4f3 --- /dev/null +++ b/konsultasi/conf/function.php @@ -0,0 +1,300 @@ + 0, 'msg' => $msg)); + exit(); + } +} + +function getHari($date) +{ + $timestamp = strtotime($date); + $day = date('D', $timestamp); + $hari = '-'; + switch ($day) { + case 0: $hari = 'Minggu'; break; + case 1: $hari = 'Senin'; break; + case 2: $hari = 'Selasa'; break; + case 3: $hari = 'Rabu'; break; + case 4: $hari = 'Kamis'; break; + case 5: $hari = 'Jumat'; break; + case 6: $hari = 'Sabtu'; break; + } + + return $hari; +} + +function convertHaritoInt($hari) +{ + $intHari = 0; + switch ($hari) { + case 'Senin': $intHari = 1; break; + case 'Selasa': $intHari = 2; break; + case 'Rabu': $intHari = 3; break; + case 'Kamis': $intHari = 4; break; + case 'Jumat': $intHari = 5; break; + case 'Sabtu': $intHari = 6; break; + case 'Minggu': $intHari = 0; break; + } + + return $intHari; +} + +function createToken($id) +{ + $x = base64_encode($id); + $time = base64_encode(time()); + //php7 keatas + $token = $x.bin2hex(random_bytes(64)).$time; + + //dibawah php 7 + //$token = $x.bin2hex(openssl_random_pseudo_bytes(64)).$time; + + return $token; +} + +function getUnauthorizedMessage() +{ + return json_encode( + array( + 'status' => '0', + 'msg' => 'Unauthorized', + ) + ); +} + +function getUnknownTypeMessage() +{ + return json_encode( + array( + 'status' => '0', + 'msg' => 'Unknown Type', + ) + ); +} + +function getKonsultasiNotFoundMessage() +{ + return json_encode( + array( + 'status' => '0', + 'msg' => 'Data konsultasi tidak ditemukan', + ) + ); +} + +function getDataNotFoundMessage() +{ + return json_encode( + array( + 'status' => '0', + 'msg' => 'Data Not Found', + ) + ); +} + +function getDataEmptyMessage() +{ + return json_encode( + array( + 'status' => '0', + 'msg' => 'Data cannot be empty', + ) + ); +} + +function getHariText($hari) +{ + $hariText = '-'; + switch ($hari) { + case '0': $hariText = 'Minggu'; break; + case '1': $hariText = 'Senin'; break; + case '2': $hariText = 'Selasa'; break; + case '3': $hariText = 'Rabu'; break; + case '4': $hariText = 'Kamis'; break; + case '5': $hariText = 'Jumat'; break; + case '6': $hariText = 'Sabtu'; break; + } + + return $hariText; +} + +function cwUpload($field_name = '', $target_folder = '', $file_name = '', $thumb = false, $thumb_folder = '', $thumb_width = '', $thumb_height = '') +{ + //folder path setup + $target_path = $target_folder; + $thumb_path = $thumb_folder; + + //file name setup + $filename_err = explode('.', $_FILES[$field_name]['name']); + $filename_err_count = count($filename_err); + $file_ext = $filename_err[$filename_err_count - 1]; + if ($file_name != '') { + $fileName = $file_name.'.'.$file_ext; + } else { + $fileName = $_FILES[$field_name]['name']; + } + + //upload image path + $upload_image = $target_path.basename($fileName); + + //upload image + if (move_uploaded_file($_FILES[$field_name]['tmp_name'], $upload_image)) { + //thumbnail creation + if ($thumb == true) { + $thumbnail = $thumb_path.$fileName; + list($width, $height) = getimagesize($upload_image); + $thumb_create = imagecreatetruecolor($thumb_width, $thumb_height); + switch ($file_ext) { + case 'jpg': + $source = imagecreatefromjpeg($upload_image); + break; + case 'jpeg': + $source = imagecreatefromjpeg($upload_image); + break; + + case 'png': + $source = imagecreatefrompng($upload_image); + break; + case 'gif': + $source = imagecreatefromgif($upload_image); + break; + default: + $source = imagecreatefromjpeg($upload_image); + } + + imagecopyresized($thumb_create, $source, 0, 0, 0, 0, $thumb_width, $thumb_height, $width, $height); + switch ($file_ext) { + case 'jpg' || 'jpeg': + imagejpeg($thumb_create, $thumbnail, 100); + break; + case 'png': + imagepng($thumb_create, $thumbnail, 100); + break; + + case 'gif': + imagegif($thumb_create, $thumbnail, 100); + break; + default: + imagejpeg($thumb_create, $thumbnail, 100); + } + } + + return $fileName; + } else { + return false; + } +} + +function getPeriode($waktu, $before = false) +{ + $interval = 5 * 60; //10 menit + $timeStart = strtotime(date('d-m-Y 00:00:00')); + $timeEnd = strtotime(date('d-m-Y 23:59:59')); + + $inTime = true; + $i = 1; + $periode = ''; + $periodeBefore = ''; + while ($inTime) { + $time = $timeStart + ($i * $interval); + $timeBefore = $time - $interval; + $timeNext = $time + $interval; + + if (($waktu >= $time) && ($waktu < $timeNext)) { + $periode = date('H:i:s', $time).' - '.date('H:i:s', $timeNext); + $periodeBefore = date('H:i:s', $timeBefore).' - '.date('H:i:s', $time); + + $inTime = false; + } + + //stop looing kalau belum jam start + if ($time < $timeStart) { + $inTime = false; + } + + //stop looping kalau udh lewat + if ($time > $timeEnd) { + $inTime = false; + } + //echo $time.'
'; + //array_push($arrTime,$time); + ++$i; + } + if ($before) { + return array( + 'now' => $periode, + 'before' => $periodeBefore, + ); + } else { + return $periode; + } +} + +function utf8ize($d) +{ + if (is_array($d)) { + foreach ($d as $k => $v) { + $d[$k] = utf8ize($v); + } + } elseif (is_string($d)) { + return utf8_encode($d); + } + + return $d; +} + +function convertToDmy($tanggal) +{ + $arr = explode('-', $tanggal); + if (sizeof($arr) === 3) { + return $arr[2].'-'.$arr[1].'-'.$arr[0]; + } else { + return $tanggal; + } +} + +function convertKosong($val) +{ + if ($val === null) { + return '-'; + } + + $val = trim($val); + if ($val === '') { + return '-'; + } + + return $val; +} diff --git a/konsultasi/conf/index.php b/konsultasi/conf/index.php new file mode 100644 index 0000000..e69de29 diff --git a/konsultasi/conf/koneksiPDO.php b/konsultasi/conf/koneksiPDO.php new file mode 100644 index 0000000..1e061f6 --- /dev/null +++ b/konsultasi/conf/koneksiPDO.php @@ -0,0 +1,88 @@ +host = getenv('DB_HOST') ?: 'localhost'; + $this->user = getenv('DB_USER') ?: 'spota_informatika'; + $this->pass = getenv('DB_PASSWORD') ?: 'Eud!}ZML3HVO'; + $this->db = getenv('DB_KONSULTASI') ?: 'spota_konsultasi'; + $this->dbSpota = getenv('DB_SPOTA') ?: getenv('DB_NAME') ?: 'spota_spotadb'; + $this->dbBio = getenv('DB_BIO') ?: 'enda_daftarmhs'; + $this->dbDosen = getenv('DB_DOSEN') ?: 'enda_dosen'; + } + + public function connect() + { + $con = new PDO('mysql:host='.$this->host.';dbname='.$this->db, $this->user, $this->pass); + if (!$con) { + die('Could not connect to database!'); + } else { + $this->myconn = $con; + } + + return $this->myconn; + } + + public function connectSpota() + { + $con = new PDO('mysql:host='.$this->host.';dbname='.$this->dbSpota, $this->user, $this->pass); + if (!$con) { + die('Could not connect to database!'); + } else { + $this->myconn = $con; + } + + return $this->myconn; + } + + public function close() + { + $this->myconn = null; + } + + public function connectDbBio() + { + $con = new PDO('mysql:host='.$this->host.';dbname='.$this->dbBio, $this->user, $this->pass); + if (!$con) { + die('Could not connect to database!'); + } else { + $this->myconn = $con; + } + + return $this->myconn; + } + + public function closeDbBio() + { + $this->myconn = null; + } + + public function connectDbDosen() + { + $con = new PDO('mysql:host='.$this->host.';dbname='.$this->dbDosen, $this->user, $this->pass); + if (!$con) { + die('Could not connect to database!'); + } else { + $this->myconn = $con; + } + + return $this->myconn; + } + + public function closeDbDosen() + { + $this->myconn = null; + } +} diff --git a/konsultasi/conf/periodeGenerator.php b/konsultasi/conf/periodeGenerator.php new file mode 100644 index 0000000..16899bf --- /dev/null +++ b/konsultasi/conf/periodeGenerator.php @@ -0,0 +1,30 @@ +'; + + //stop looing kalau belum jam start + if ($time < $timeStart) { + $inTime = false; + } + + //stop looping kalau udh lewat + if ($time > $timeEnd) { + $inTime = false; + } + //echo $time.'
'; + //array_push($arrTime,$time); + ++$i; +} + +?> \ No newline at end of file diff --git a/konsultasi/css/index.php b/konsultasi/css/index.php new file mode 100644 index 0000000..e69de29 diff --git a/konsultasi/css/stylelogin.css b/konsultasi/css/stylelogin.css new file mode 100644 index 0000000..d67895b --- /dev/null +++ b/konsultasi/css/stylelogin.css @@ -0,0 +1,52 @@ +html { + scroll-behavior: smooth; +} + +body { + background-color: #F1F8FB; +} + +.webLogin { + background-color: white; + float: none; + position: absolute; + width: 350px; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + padding: 2rem 3rem; + -webkit-box-shadow: 12px 14px 16px -9px rgba(0, 0, 0, 0.75); + -moz-box-shadow: 12px 14px 16px -9px rgba(0, 0, 0, 0.75); + box-shadow: 12px 14px 16px -9px rgba(0, 0, 0, 0.75); + border-radius: 25px; + border: 1px solid #EBEBEA; +} + +.webLoginNew { + margin: 2rem 2rem; + background-color: white; + float: none; + padding: 2rem 3rem; + -webkit-box-shadow: 12px 14px 16px -9px rgba(0, 0, 0, 0.75); + -moz-box-shadow: 12px 14px 16px -9px rgba(0, 0, 0, 0.75); + box-shadow: 12px 14px 16px -9px rgba(0, 0, 0, 0.75); + border-radius: 25px; + border: 1px solid #EBEBEA; +} + +.blueColor { + color: #2185D0 !important; +} + +.rightFloated { + float: right; +} + +.cursorLink { + cursor: pointer; +} + +.fitButton{ + background-color : transparent; + border-color : transparent; +} diff --git a/konsultasi/dosen/css/index.php b/konsultasi/dosen/css/index.php new file mode 100644 index 0000000..e69de29 diff --git a/konsultasi/dosen/css/style.css b/konsultasi/dosen/css/style.css new file mode 100644 index 0000000..9d85bab --- /dev/null +++ b/konsultasi/dosen/css/style.css @@ -0,0 +1,88 @@ +.giveMeEllipsis { + overflow: hidden; + text-overflow: ellipsis; + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-line-clamp: 2; /* number of lines to show */ +} + +.blueBackground{ + background-color: #F1F8FB !important; +} + +.backgroundLoader{ + position:fixed; + height:100%; + width:100%; + top:0; + left:0; + margin:0rem 0rem ; + z-index:2000 ; +} + +.addSubHeaderMargin{ + margin-top: 0.5rem !important; +} + +.fitButton{ + background-color : transparent; + border-color : transparent; +} + +.contentContainer{ + margin-top:80px; +} + +@media only screen and (max-width: 678px) { + .contentContainer { + margin-top:170px; + } + } + + .blueColor { + color: #2185D0 !important; + } + + .overlayMap{ + position:absolute; + left:0 ; + top:0; + margin-top :1rem; + margin-left :1rem; + margin-bottom :1rem; + width:97%; + height:80vh; + background-color:black; + opacity: 0.5; + } + + .middleText{ + color:white; + opacity: 1; + font-weight: 900; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + } + + .fixedKoordinatMap{ + height :200px; + } + + #mapEditTitikKoordinat .centerMarker{ + position:absolute; + /*url of the marker*/ + background:url(http://maps.gstatic.com/mapfiles/markers2/marker.png) no-repeat; + /*center the marker*/ + top:50%;left:50%; + z-index:1; + /*fix offset when needed*/ + margin-left:-10px; + margin-top:-34px; + /*size of the image*/ + height:34px; + width:20px; + cursor:pointer; + } + \ No newline at end of file diff --git a/konsultasi/dosen/index.php b/konsultasi/dosen/index.php new file mode 100644 index 0000000..09a44c3 --- /dev/null +++ b/konsultasi/dosen/index.php @@ -0,0 +1,168 @@ +getLoginPage(); + header('Location: '.$loginPage); + exit(); + } + $dataUser = $_SESSION['konsulDosen']; + + $token = $dataUser['token']; + $namaUser = $dataUser['nama']; + + $urlAPI = $server->getAPIUrl(); + $urlDataTable = $server->getDataTableURL(); + $urlBerkas = $server->getBerkasUrl(); + $conn = new createCon(); + $dbh = $conn->connect(); +?> + + + + + + + + + Konsultasi Skripsi - Dosen + + + + + + + + + + + + + + +
+
+ +
+
+ +
+ + + + +
+ + diff --git a/konsultasi/dosen/js/4eed0cb4b7d8326b9cc764890ea2a342.js b/konsultasi/dosen/js/4eed0cb4b7d8326b9cc764890ea2a342.js new file mode 100644 index 0000000..44b6d8b --- /dev/null +++ b/konsultasi/dosen/js/4eed0cb4b7d8326b9cc764890ea2a342.js @@ -0,0 +1,966 @@ +const noDataTextTabel = "No data available in table"; +const serverErrorText = + "Gagal terhubung ke Server, cek koneksi internet anda!!!"; +const ajaxTimeout = 15000; +let idTANow, idKPNow; +let dataKonsul = []; +let dataKonsulKP = []; +let dataKP = []; +let tabelTugasAkhir, tabelKerjaPraktek, tabelKerjaPraktekKP; +let isPembKPNow = false; + +const logoutModal = { + show: () => { + $("#logoutModal").modal({ + onApprove: function(){ + doLogout(); + return false; + } + }).modal("show"); + }, + hide: () => { + $("#logoutModal").modal("hide"); + } +}; + +const loader = { + show: () => { + $("#loaderSegment").show(); + }, + hide: () => { + $("#loaderSegment").hide(); + } +}; + +const verifKonsultasiModal = { + show: (idKonsultasi) => { + $("#verifikasiModal") + .modal({ + autofocus: false, + onApprove: function() { + postVerifKonsultasi(idKonsultasi); + return false; + }, + allowMultiple: true + }) + .modal("show"); + }, + hide: () => { + $("#verifikasiModal").modal("hide"); + } +}; + +const verifikasiKPModal = { + show: (idKonsultasi) => { + $("#verifikasiKPModal") + .modal({ + onApprove: function() { + postVerifKonsultasiKP(idKonsultasi); + return false; + }, + allowMultiple: true + }) + .modal("show"); + }, + hide: () => { + $("#verifikasiKPModal").modal("hide"); + } +}; + +$(document).ready(function() { + document.getElementById("x").click(); + setInterval(refreshSession, 60 * 1000); + $('.ui.dropdown').dropdown(); + $('.ui.radio.checkbox').checkbox(); + $('#tabKerjaPraktek .item').tab(); +}); + +function refreshSession() { + let request = $.ajax({ + url: urlAPI + `/web-refreshSession.php`, + type: "GET", + contentType: "application/json", + processData: false, + contentType: false, + cache: false + }); + + request.done(function(msg) {}); + + request.fail(function(jqXHR, textStatus) {}); +} + +function doLogout() { + window.location.replace("logout.php"); +} + + +function sideBar() { + $(".ui.sidebar").sidebar("toggle"); +} + +function openTab(evt, divName) { + var i, tabcontent, tablinks; + + var namatabcontent = "tabContent"; + var namatablink = "tabLinks"; + + let judul = ""; + + tabcontent = document.getElementsByName(namatabcontent); + for (i = 0; i < tabcontent.length; i++) { + tabcontent[i].style.display = "none"; + } + + tablinks = document.getElementsByName(namatablink); + for (i = 0; i < tablinks.length; i++) { + tablinks[i].className = tablinks[i].className.replace("active", ""); + } + + $(".ui.sidebar").sidebar("hide"); + + evt.currentTarget.className += " active"; + document.getElementById(divName).style.display = "block"; + doEvent(divName); +} + +function doEvent(namaEvent) { + judul = ""; + + switch (namaEvent) { + case "konsultasi": + judul = "Konsultasi Tugas Akhir"; + refreshTabelTugasAkhir(); + break; + case "kerjaPraktek": + judul = "Kerja Praktek"; + refreshTabelKerjaPraktek(); + refreshTabelKerjaPraktekPembKP(); + break; + + } + + $("#judulMenu").html(judul); +} + +function openLogoutModal() { + sideBar(); + logoutModal.show(); +} + + +function refreshTabelKerjaPraktek() { + const verif = $('#kerjaPraktekDropdown').val(); + const urlTabelKerjaPraktek = + urlDataTable +`/data_kerja_praktek.php?pa&verif=${verif}`; + + if (tabelKerjaPraktek == null) { + tabelKerjaPraktek = $("#tabelKerjaPraktek").dataTable({ + ajax: urlTabelKerjaPraktek, + processing: true, + serverSide: true, + contentType: "application/json", + ordering: false, + sortable: false, + oLanguage: { + sSearch: "Nama/ NIM Mahasiswa:" + }, + autoWidth: false, + columns: [ + { data: "0" }, + { + sortable: false, + render: function(data, type, full, meta) { + return `${full[17]}
NIM : ${full[18]}`; + } + }, + { + sortable: false, + render: function(data, type, full, meta) { + return `${full[3]} - ${full[4]}`; + } + }, + { + sortable: false, + render: function(data, type, full, meta) { + return `${full[1]} ${getLabelKPBaru(full[26])}
Waktu Input : ${full[12]}
Waktu Verifikasi Dosen PA : ${full[13]}
Waktu Verifikasi Admin : ${full[22]}
`; + } + }, + { + sortable: false, + render: function(data, type, full, meta) { + return `${full[2]}`; + } + }, + { + data: 6, + sortable: false, + render: function(data, type, full, meta) { + return getLabelSetuju(data) ; + } + }, + { + data: 7, + sortable: false, + render: function(data, type, full, meta) { + dataKP[data] = full; + const isPembimbingKP = full[20]; + const isPembimbingPA = full[21]; + const status = full[6]; + if(isPembimbingKP){ + return ``; + }else{ + if(status == "0"){ + return ``; + }else{ + return ``; + + } + + } + + } + } + ] + }); + } else { + tabelKerjaPraktek + .api() + .ajax.url(urlTabelKerjaPraktek) + .load(); + } +} + +function refreshTabelKerjaPraktekPembKP(){ + const verif = $('#kerjaPraktekKPDropdown').val(); + const urlTabelKerjaPraktek = + urlDataTable +`/data_kerja_praktek.php?kp&verif=${verif}`; + + if (tabelKerjaPraktekKP == null) { + tabelKerjaPraktekKP = $("#tabelKPKerjaPraktek").dataTable({ + ajax: urlTabelKerjaPraktek, + processing: true, + serverSide: true, + contentType: "application/json", + ordering: false, + sortable: false, + oLanguage: { + sSearch: "Nama/ NIM Mahasiswa:" + }, + autoWidth: false, + columns: [ + { data: "0" }, + { + sortable: false, + render: function(data, type, full, meta) { + return `${full[17]}
NIM : ${full[18]}`; + } + }, + { + sortable: false, + render: function(data, type, full, meta) { + return `${full[3]} - ${full[4]}`; + } + }, + { + sortable: false, + render: function(data, type, full, meta) { + return `${full[1]} ${getLabelKPBaru(full[26])}`; + } + }, + { + sortable: false, + render: function(data, type, full, meta) { + return `${full[2]}`; + } + }, + { + data: 23, + sortable: false, + render: function(data, type, full, meta) { + return getLabelStatusProposal(data, full[24]) ; + } + }, + { + data: 7, + sortable: false, + render: function(data, type, full, meta) { + dataKP[data] = full; + const isPembimbingKP = full[20]; + const isPembimbingPA = full[21]; + const status = full[23]; + if(!isPembimbingKP){ + return ``; + }else{ + if(status == "0"){ + return ``; + }else{ + return ``; + + } + + } + + } + } + ] + }); + } else { + tabelKerjaPraktekKP + .api() + .ajax.url(urlTabelKerjaPraktek) + .load(); + } +} + +function getLabelSetuju(setuju){ + switch(setuju){ + case "0" : return ``; + case "1" : return ``; + case "2" : return ``; + default : return `-`; + } +} + +function getLabelStatusProposal(statusProposal, fileProposal){ + if(fileProposal == null || fileProposal == ''){ + return `` + }else{ + switch(statusProposal){ + case "0" : return ``; + case "1" : return ``; + case "2" : return ``; + default : return `-`; + } + } +} +function refreshTabelTugasAkhir() { + const order = $('#orderTugasAkhir').val(); + const selesai = $('#selesaiTugasAkhir').val(); + const urlTabelTugasAkhir = + urlDataTable +`/data_tugas_akhir.php?orderBy=${order}&selesai=${selesai}`; + + if (tabelTugasAkhir == null) { + tabelTugasAkhir = $("#tabelTugasAkhir").dataTable({ + ajax: urlTabelTugasAkhir, + processing: true, + serverSide: true, + contentType: "application/json", + ordering: false, + sortable: false, + oLanguage: { + sSearch: "Judul TA/ Nama/ NIM Mahasiswa:" + }, + autoWidth: false, + columns: [ + { data: "0" }, + { + data: "1", + render: function(data, type, full, meta) { + return `${data} ${getLabelSelesai(full[6])}`; + } + }, + { data: "2" }, + { data: "3" }, + { data: "4" }, + { + sortable: false, + render: function(data, type, full, meta) { + return ``; + } + } + ] + }); + } else { + tabelTugasAkhir + .api() + .ajax.url(urlTabelTugasAkhir) + .load(); + } +} + + +function showDetailTugasAkhir(idTA){ + let formData = new FormData(); + formData.append("token", token); + formData.append("id", idTA); + formData.append("tipe", "dosen"); + + loader.show(); + let request = $.ajax({ + url: urlAPI + "/getDetailTA.php", + timeout: ajaxTimeout, + type: "POST", + data: formData, + processData: false, + contentType: false + }); + + request.done(function(msg) { + const status = msg.status; + loader.hide(); + if(status === 1){ + const data = msg.tugasAkhir; + const judul = data.judul; + const mahasiswa = data.mahasiswa; + const nim = data.nim; + const pembimbing1 = data.pembimbing1; + const pembimbing2 = data.pembimbing2; + const penguji1 = data.penguji1; + const penguji2 = data.penguji2; + const semester = data.semester; + const tahun = data.tahun; + const tanggalKeputusan = data.tanggalKeputusan; + const hp = data.hp; + const email = data.email; + + let aksiUser = ''; + if(!(hp == '' || hp == null)){ + aksiUser += ``; + } + + if(!(email == '' || email == null)){ + aksiUser += ``; + } + + $('#namaMahasiswaTugasAkhir').html(`${mahasiswa}
(${nim})`); + $('#callMahasiswa').html(`HP : ${hp} / Email : ${email}`); + $('#judulTugasAkhir').html(judul); + $('#semTATugasAkhir').html(semester); + $('#waktuKepTugasAkhir').html(tanggalKeputusan); + $('#pemb1TugasAkhir').html(pembimbing1); + $('#pemb2TugasAkhir').html(pembimbing2); + $('#peng1TugasAkhir').html(penguji1); + $('#peng2TugasAkhir').html(penguji2); + idTANow = idTA; + $('#detailTugasAkhirModal').modal({allowMultiple: true, autofocus: false}).modal('show'); + fillKonsultasiHistory(); + }else{ + showToast('warning', msg.msg); + } + }); + + request.fail(function(jqXHR, textStatus) { + showToast("error", serverErrorText); + }); +} + +function fillKonsultasiHistory(){ + dataKonsul = []; + const idTA = idTANow; + let formData = new FormData(); + formData.append("token", token); + formData.append("id", idTA); + formData.append("tipe", "dosen"); + + $('#tabelListKonsultasi > tbody').html(`
`); + let request = $.ajax({ + url: urlAPI + "/getKonsultasiHistory.php", + timeout: ajaxTimeout, + type: "POST", + data: formData, + processData: false, + contentType: false + }); + + request.done(function(msg) { + const status = msg.status; + loader.hide(); + if(status === 1){ + const listData = msg.data; + const banyakData = listData.length; + if(banyakData === 0){ + $('#tabelListKonsultasi > tbody').html(`Tidak Ada Data`); + }else{ + let isiTabel = ''; + for(let i = (banyakData-1); i >= 0; i--){ + let konsultasi = listData[i]; + const id = konsultasi.id; + const waktu = konsultasi.waktu; + const topik = konsultasi.topik; + const editable = konsultasi.editable; + const verifPemb1 = konsultasi.verifPemb1; + const verifPemb2 = konsultasi.verifPemb2; + const no = i + 1; + konsultasi.konsulKe = no; + dataKonsul[id] = konsultasi; + + if(isPembKPNow){ + editable = false; + } + + let aksi = ` `; + if(editable){ + aksi += ``; + }else{ + aksi += ``; + } + isiTabel += `${no}${waktu}${topik}${getVerifikasiLabel(verifPemb1)}${getVerifikasiLabel(verifPemb2)}${aksi}`; + } + $('#tabelListKonsultasi > tbody').html(isiTabel); + } + }else{ + showToast('warning', msg.msg); + } + }); + + request.fail(function(jqXHR, textStatus) { + $('#tabelListKonsultasi > tbody').html(`Gagal mengambil data, cek koneksi internet anda.`); + showToast("error", serverErrorText); + }); +} + +function fillKonsultasiKPHistory(){ + dataKonsulKP = []; + const idKP = idKPNow; + let formData = new FormData(); + formData.append("token", token); + formData.append("id", idKP); + formData.append("tipe", "dosen"); + + $('#tabelListKonsultasiKP > tbody').html(`
`); + let request = $.ajax({ + url: "https://informatika.untan.ac.id/API/KP/getKonsultasiHistory.php?dosen", + timeout: ajaxTimeout, + type: "POST", + data: formData, + processData: false, + contentType: false + }); + + request.done(function(msg) { + const status = msg.status; + loader.hide(); + if(status === 1){ + const listData = msg.data; + const banyakData = listData.length; + if(banyakData === 0){ + $('#tabelListKonsultasiKP > tbody').html(`Tidak Ada Data`); + }else{ + let isiTabel = ''; + for(let i = (banyakData-1); i >= 0; i--){ + let konsultasi = listData[i]; + const id = konsultasi.id; + const waktu = konsultasi.waktu; + const topik = konsultasi.topik; + const editable = konsultasi.editable; + const verifPemb = konsultasi.verifPemb; + + const no = i + 1; + konsultasi.konsulKe = no; + dataKonsulKP[id] = konsultasi; + let aksi = ` `; + if(editable){ + aksi += ``; + } + isiTabel += `${no}${waktu}${topik}${getVerifikasiLabel(verifPemb)}${aksi}`; + } + $('#tabelListKonsultasiKP > tbody').html(isiTabel); + } + }else{ + showToast('warning', msg.msg); + } + }); + + request.fail(function(jqXHR, textStatus) { + $('#tabelListKonsultasiKP > tbody').html(`Gagal mengambil data, cek koneksi internet anda.`); + showToast("error", serverErrorText); + }); +} + +function verifKonsultasi(id){ + const konsultasi = dataKonsul[id]; + const tanggal = konsultasi.waktu; + const topik = konsultasi.topik; + let catatan = ''; + if(konsultasi.isPemb1){ + catatan = konsultasi.catatanPemb1; + } + + if(konsultasi.isPemb2){ + catatan = konsultasi.catatanPemb2; + } + + if(catatan == "Tidak Ada Catatan"){ + catatan = ""; + } + + $('#catatanVerif').html(''); + $('#contentVerif').html(`Konsultasi tanggal ${tanggal} dengan topik:\n ${topik}?`); + verifKonsultasiModal.show(id); + + initCalendarHari('dateKonsultasiCalendar'); + $('#dateKonsultasiField').val(tanggal); + $('#catatanVerif').val(catatan) +} + +function verifKonsultasiKP(id){ + const konsultasi = dataKonsulKP[id]; + const tanggal = konsultasi.waktu; + const topik = konsultasi.topik; + + $('#catatanVerifKP').html(''); + $('#contentVerifKP').html(`Konsultasi tanggal ${tanggal} dengan topik:\n ${topik}?`); + verifikasiKPModal.show(id); + + initCalendarHari('dateKonsultasiCalendarKP'); + $('#dateKonsultasiFieldKP').val(tanggal); +} + +function showToast(status, pesan) { + $("body").toast({ + class: status, + message: pesan + }); +} + +function getVerifikasiLabel(verif){ + if(verif){ + return ``; + }else{ + return ``; + } +} + +function showDetailKonsultasi(id){ + const konsultasi = dataKonsul[id]; + const namaPemb1 = konsultasi.pemb1; + const namaPemb2 = konsultasi.pemb2; + const verifPemb1 = getVerifikasiLabel(konsultasi.verifPemb1); + const verifPemb2 = getVerifikasiLabel(konsultasi.verifPemb2); + let waktuPemb1 = konsultasi.waktuPemb1; + let waktuPemb2 = konsultasi.waktuPemb2; + const topik = konsultasi.topik; + const konsulKe = konsultasi.konsulKe; + const catatanPemb1 = konsultasi.catatanPemb1; + const catatanPemb2 = konsultasi.catatanPemb2; + + if(!konsultasi.verifPemb1){ + waktuPemb1 = '-'; + } + + if(!konsultasi.verifPemb2){ + waktuPemb2 = '-'; + } + $('#detailKonsulKe').html(konsulKe); + $('#detailKonsulTopik').html(topik); + $('#catatanPemb1').html(catatanPemb1); + $('#catatanPemb2').html(catatanPemb2); + $('#detailKonsulPemb1').html(`${namaPemb1}
Status Konsultasi : ${verifPemb1}
Waktu Verifikasi : ${waktuPemb1}`); + $('#detailKonsulPemb2').html(`${namaPemb2}
Status Konsultasi : ${verifPemb2}
Waktu Verifikasi : ${waktuPemb2}`); + $('#detailKonsultasiModal').modal({allowMultiple:true}).modal('show'); +} + +function showDetailKonsultasiKP(id){ + const konsultasi = dataKonsulKP[id]; + let verifPemb = getVerifikasiLabel(konsultasi.verifPemb); + let waktuPemb = konsultasi.waktuPemb; + const topik = konsultasi.topik; + const konsulKe = konsultasi.konsulKe; + const catatanPemb = konsultasi.catatanDosen; + + // if(!konsultasi.verifPemb){ + // verifPemb = '-'; + // } + + $('#detailKonsulKeKP').html(konsulKe); + $('#detailKonsulTopikKP').html(topik); + $('#catatanPembKP').html(catatanPemb); + $('#detailKonsulPembKP').html(`${verifPemb}
Waktu Verifikasi : ${waktuPemb}`); + $('#detailKonsultasiKPModal').modal({allowMultiple:true}).modal('show'); +} + + + +function postVerifKonsultasi(id){ + const catatanVerif = $('#catatanVerif').val(); + let formData = new FormData(); + formData.append("token", token); + formData.append("id", id); + formData.append("catatan", catatanVerif); + formData.append("tanggal", $("#dateKonsultasiField").val()); + + loader.show(); + let request = $.ajax({ + url: urlAPI + "/verifKonsultasi.php", + timeout: ajaxTimeout, + type: "POST", + data: formData, + processData: false, + contentType: false + }); + + request.done(function(msg) { + const status = msg.status; + const pesan = msg.msg; + loader.hide(); + if(status === 1){ + showToast('success', pesan); + verifKonsultasiModal.hide(); + fillKonsultasiHistory(); + }else{ + showToast('warning', pesan); + } + }); + + request.fail(function(jqXHR, textStatus) { + showToast("error", serverErrorText); + }); +} + +function postVerifKonsultasiKP(id){ + const catatanVerif = $('#catatanVerifKP').val(); + let formData = new FormData(); + formData.append("token", token); + formData.append("id", id); + formData.append("catatan", catatanVerif); + formData.append("tanggal", $("#dateKonsultasiFieldKP").val()); + + loader.show(); + let request = $.ajax({ + url: urlAPI + "/verifKonsultasiKP.php", + timeout: ajaxTimeout, + type: "POST", + data: formData, + processData: false, + contentType: false + }); + + request.done(function(msg) { + const status = msg.status; + const pesan = msg.msg; + loader.hide(); + if(status === 1){ + showToast('success', pesan); + verifikasiKPModal.hide(); + fillKonsultasiKPHistory(); + }else{ + showToast('warning', pesan); + } + }); + + request.fail(function(jqXHR, textStatus) { + showToast("error", serverErrorText); + }); +} + +function showVerifKP(idKP, tipeView = 'pa'){ + idKPNow = idKP; + const kp = dataKP[idKP]; + const isPembimbingKP = kp[20]; + const isPembimbingPA = kp[21]; + isPembKPNow = isPembimbingKP; + + $('#namaKPDetail').html(`${kp[17]}`); + $('#nimKPDetail').html(`${kp[18]}`); + $('#telpKPDetail').html(`${kp[27]} / ${kp[28]}`); + $('#emailKPDetail').html(`${kp[29]}`); + $('#periodeKPDetail').html(`${kp[3]} - ${kp[4]}`); + $('#pembimbingLapanganKPDetail').html(kp[5]); + $('#verifPAKPDetail').html(getLabelSetuju(kp[6])); + $('#verifAdminKPDetail').html(getLabelSetuju(kp[16])); + $('#kptopikDetail').html(kp[1]); + $('#kpdeskripsiDetail').html(kp[10]); + $('#kpnamaInstansiDetail').html(kp[2]); + $('#kpnamaPimpinanDetail').html(kp[14]); + $('#kpalamatInstansiDetail').html(kp[15]); + $('#kpnamaNarahubungDetail').html(kp[8]); + $('#kptelpNarahubungDetail').html(kp[9]); + $('#kpCatatanDetail').html(kp[11]); + $('#statusProposalKPDetail').html(getLabelStatusProposal(kp[23], kp[24])); + $('#fileProposalKPDetail').html(getDownloadFileButton(kp[24])); + + $('#formKP').form('clear'); + $('#formKP').form('set values',{ + verifikasiKP: kp[6], + catatanKP: kp[19], + verifikasiProposalKP: kp[23], + catatanProposalKP: kp[25] + }); + + + $('#kerjaPraktekDetailModal').modal({allowMultiple:true, autofocus: false}).modal('show'); + + $('#verifikasiPembKP').hide(); + + if(tipeView == "pa"){ + $('#verifikasiPAKP').show(); + }else{ + if(kp[24] != null && kp[24] != ''){ + $('#verifikasiPembKP').show(); + } + + $('#verifikasiPAKP').hide(); + } + + fillKonsultasiKPHistory(); +} + +function simpanVerifKP(){ + const allFields = $('#formKP').form('get values'); + const verif = allFields.verifikasiKP; + const catatan = allFields.catatanKP; + + if(verif == undefined || verif == ""){ + showToast('warning', "Status Verifikasi harus diisi"); + return; + } + + let formData = new FormData(); + formData.append("token", token); + formData.append("id", idKPNow); + formData.append("verif", verif); + formData.append("catatan", catatan); + + loader.show(); + let request = $.ajax({ + url: urlAPI + "/verifKP.php", + timeout: ajaxTimeout, + type: "POST", + data: formData, + processData: false, + contentType: false + }); + + request.done(function(msg) { + const status = msg.status; + const pesan = msg.msg; + loader.hide(); + if(status === 1){ + showToast('success', pesan); + $('#kerjaPraktekDetailModal').modal('hide'); + refreshTabelKerjaPraktek(); + }else{ + showToast('warning', pesan); + } + }); + + request.fail(function(jqXHR, textStatus) { + showToast("error", serverErrorText); + }); +} + +function simpanVerifProposalKP(){ + const allFields = $('#formKP').form('get values'); + const verif = allFields.verifikasiProposalKP; + const catatan = allFields.catatanProposalKP; + + if(verif == undefined || verif == ""){ + showToast('warning', "Status Verifikasi harus diisi"); + return; + } + + let formData = new FormData(); + formData.append("token", token); + formData.append("id", idKPNow); + formData.append("verif", verif); + formData.append("catatan", catatan); + + loader.show(); + let request = $.ajax({ + url: urlAPI + "/verifProposalKP.php", + timeout: ajaxTimeout, + type: "POST", + data: formData, + processData: false, + contentType: false + }); + + request.done(function(msg) { + const status = msg.status; + const pesan = msg.msg; + loader.hide(); + if(status === 1){ + showToast('success', pesan); + $('#kerjaPraktekDetailModal').modal('hide'); + refreshTabelKerjaPraktekPembKP(); + }else{ + showToast('warning', pesan); + } + }); + + request.fail(function(jqXHR, textStatus) { + showToast("error", serverErrorText); + }); +} + +function getDownloadFileButton(urlFile){ + if(urlFile == null || urlFile == ''){ + return ``; + }else{ + return ``; + } +} + +function getLabelKPBaru(val){ + if(val != undefined && val != null){ + val = Number(val); + if(val > 0){ + return ``; + } + } + + return ""; +} + +function initCalendarHari(idCalendar) { + $(`#${idCalendar}`).calendar({ + type: "date", + monthFirst: false, + formatter: { + date: function (date, settings) { + if (!date) return ""; + var day = "" + date.getDate(); + var month = "" + (date.getMonth() + 1); + var year = date.getFullYear(); + + if (day.length == 1) { + day = "0" + day; + } + + if (month.length == 1) { + month = "0" + month; + } + + return day + "-" + month + "-" + year; + }, + }, + popupOptions: { + position: "bottom left", + forcePosition: true, + lastResort: "bottom left", + prefer: "opposite", + hideOnScroll: false, + }, + }).calendar('set date', new Date());; +} + +function cetakB4(){ + window.open(`../print/cetak_konsultasi_ta.php?dosen&id=${idTANow}`, '_blank'); +} + +function getLabelSelesai(status){ + if(status == 1){ + return ``; + } + + return ``; +} \ No newline at end of file diff --git a/konsultasi/dosen/js/index.php b/konsultasi/dosen/js/index.php new file mode 100644 index 0000000..e69de29 diff --git a/konsultasi/dosen/layout/_kerjaPraktek.php b/konsultasi/dosen/layout/_kerjaPraktek.php new file mode 100644 index 0000000..dee35ab --- /dev/null +++ b/konsultasi/dosen/layout/_kerjaPraktek.php @@ -0,0 +1,297 @@ +
+
+

Kerja Praktek

+ +
+
Tampilkan: + +
+ + + + + + + + + + + + + +
No.MahasiswaPeriodeTopikInstansiStatusAksi
+
+
+
Tampilkan: + +
+ + + + + + + + + + + + + +
No.MahasiswaPeriodeTopikInstansiStatus ProposalAksi
+
+
+
+ + + + + + \ No newline at end of file diff --git a/konsultasi/dosen/layout/_konsultasi.php b/konsultasi/dosen/layout/_konsultasi.php new file mode 100644 index 0000000..b6e1f0d --- /dev/null +++ b/konsultasi/dosen/layout/_konsultasi.php @@ -0,0 +1,200 @@ +
+
+

Tugas Akhir

+ + + + + + + + + + + + + +
No.JudulMahasiswaSemesterTerakhir
Konsultasi
Lihat
+
+
+ + + + + + + + diff --git a/konsultasi/dosen/layout/index.php b/konsultasi/dosen/layout/index.php new file mode 100644 index 0000000..e69de29 diff --git a/konsultasi/dosen/logout.php b/konsultasi/dosen/logout.php new file mode 100644 index 0000000..05b5aba --- /dev/null +++ b/konsultasi/dosen/logout.php @@ -0,0 +1,4 @@ +getAPIUrl(); + + if(isset($_SESSION['konsulDosen'])){ + header("Location:./dosen/"); + exit; + } + + if(isset($_SESSION['konsulMahasiswa'])){ + header("Location:./mahasiswa/"); + exit; + } + +?> + + + + + + Informatika - Konsultasi Skripsi + + + + + + + + + + + +
+
+
+

+ Logo +
+ Konsultasi Skripsi +
Jurusan Informatika
Universitas Tanjungpura
+
+

+
+
+ + +
+
+ +
+ + +
+
+ * Login menggunakan akun SPOTA + + + +
+
+
+ + + + + \ No newline at end of file diff --git a/konsultasi/libs/DataTable/DataTables-1.10.18/css/dataTables.bootstrap.css b/konsultasi/libs/DataTable/DataTables-1.10.18/css/dataTables.bootstrap.css new file mode 100644 index 0000000..6a9e753 --- /dev/null +++ b/konsultasi/libs/DataTable/DataTables-1.10.18/css/dataTables.bootstrap.css @@ -0,0 +1,187 @@ +table.dataTable { + clear: both; + margin-top: 6px !important; + margin-bottom: 6px !important; + max-width: none !important; + border-collapse: separate !important; +} +table.dataTable td, +table.dataTable th { + -webkit-box-sizing: content-box; + box-sizing: content-box; +} +table.dataTable td.dataTables_empty, +table.dataTable th.dataTables_empty { + text-align: center; +} +table.dataTable.nowrap th, +table.dataTable.nowrap td { + white-space: nowrap; +} + +div.dataTables_wrapper div.dataTables_length label { + font-weight: normal; + text-align: left; + white-space: nowrap; +} +div.dataTables_wrapper div.dataTables_length select { + width: 75px; + display: inline-block; +} +div.dataTables_wrapper div.dataTables_filter { + text-align: right; +} +div.dataTables_wrapper div.dataTables_filter label { + font-weight: normal; + white-space: nowrap; + text-align: left; +} +div.dataTables_wrapper div.dataTables_filter input { + margin-left: 0.5em; + display: inline-block; + width: auto; +} +div.dataTables_wrapper div.dataTables_info { + padding-top: 8px; + white-space: nowrap; +} +div.dataTables_wrapper div.dataTables_paginate { + margin: 0; + white-space: nowrap; + text-align: right; +} +div.dataTables_wrapper div.dataTables_paginate ul.pagination { + margin: 2px 0; + white-space: nowrap; +} +div.dataTables_wrapper div.dataTables_processing { + position: absolute; + top: 50%; + left: 50%; + width: 200px; + margin-left: -100px; + margin-top: -26px; + text-align: center; + padding: 1em 0; +} + +table.dataTable thead > tr > th.sorting_asc, table.dataTable thead > tr > th.sorting_desc, table.dataTable thead > tr > th.sorting, +table.dataTable thead > tr > td.sorting_asc, +table.dataTable thead > tr > td.sorting_desc, +table.dataTable thead > tr > td.sorting { + padding-right: 30px; +} +table.dataTable thead > tr > th:active, +table.dataTable thead > tr > td:active { + outline: none; +} +table.dataTable thead .sorting, +table.dataTable thead .sorting_asc, +table.dataTable thead .sorting_desc, +table.dataTable thead .sorting_asc_disabled, +table.dataTable thead .sorting_desc_disabled { + cursor: pointer; + position: relative; +} +table.dataTable thead .sorting:after, +table.dataTable thead .sorting_asc:after, +table.dataTable thead .sorting_desc:after, +table.dataTable thead .sorting_asc_disabled:after, +table.dataTable thead .sorting_desc_disabled:after { + position: absolute; + bottom: 8px; + right: 8px; + display: block; + font-family: 'Glyphicons Halflings'; + opacity: 0.5; +} +table.dataTable thead .sorting:after { + opacity: 0.2; + content: "\e150"; + /* sort */ +} +table.dataTable thead .sorting_asc:after { + content: "\e155"; + /* sort-by-attributes */ +} +table.dataTable thead .sorting_desc:after { + content: "\e156"; + /* sort-by-attributes-alt */ +} +table.dataTable thead .sorting_asc_disabled:after, +table.dataTable thead .sorting_desc_disabled:after { + color: #eee; +} + +div.dataTables_scrollHead table.dataTable { + margin-bottom: 0 !important; +} + +div.dataTables_scrollBody > table { + border-top: none; + margin-top: 0 !important; + margin-bottom: 0 !important; +} +div.dataTables_scrollBody > table > thead .sorting:after, +div.dataTables_scrollBody > table > thead .sorting_asc:after, +div.dataTables_scrollBody > table > thead .sorting_desc:after { + display: none; +} +div.dataTables_scrollBody > table > tbody > tr:first-child > th, +div.dataTables_scrollBody > table > tbody > tr:first-child > td { + border-top: none; +} + +div.dataTables_scrollFoot > .dataTables_scrollFootInner { + box-sizing: content-box; +} +div.dataTables_scrollFoot > .dataTables_scrollFootInner > table { + margin-top: 0 !important; + border-top: none; +} + +@media screen and (max-width: 767px) { + div.dataTables_wrapper div.dataTables_length, + div.dataTables_wrapper div.dataTables_filter, + div.dataTables_wrapper div.dataTables_info, + div.dataTables_wrapper div.dataTables_paginate { + text-align: center; + } +} +table.dataTable.table-condensed > thead > tr > th { + padding-right: 20px; +} +table.dataTable.table-condensed .sorting:after, +table.dataTable.table-condensed .sorting_asc:after, +table.dataTable.table-condensed .sorting_desc:after { + top: 6px; + right: 6px; +} + +table.table-bordered.dataTable th, +table.table-bordered.dataTable td { + border-left-width: 0; +} +table.table-bordered.dataTable th:last-child, table.table-bordered.dataTable th:last-child, +table.table-bordered.dataTable td:last-child, +table.table-bordered.dataTable td:last-child { + border-right-width: 0; +} +table.table-bordered.dataTable tbody th, +table.table-bordered.dataTable tbody td { + border-bottom-width: 0; +} + +div.dataTables_scrollHead table.table-bordered { + border-bottom-width: 0; +} + +div.table-responsive > div.dataTables_wrapper > div.row { + margin: 0; +} +div.table-responsive > div.dataTables_wrapper > div.row > div[class^="col-"]:first-child { + padding-left: 0; +} +div.table-responsive > div.dataTables_wrapper > div.row > div[class^="col-"]:last-child { + padding-right: 0; +} diff --git a/konsultasi/libs/DataTable/DataTables-1.10.18/css/dataTables.bootstrap.min.css b/konsultasi/libs/DataTable/DataTables-1.10.18/css/dataTables.bootstrap.min.css new file mode 100644 index 0000000..af6ecfe --- /dev/null +++ b/konsultasi/libs/DataTable/DataTables-1.10.18/css/dataTables.bootstrap.min.css @@ -0,0 +1 @@ +table.dataTable{clear:both;margin-top:6px !important;margin-bottom:6px !important;max-width:none !important;border-collapse:separate !important}table.dataTable td,table.dataTable th{-webkit-box-sizing:content-box;box-sizing:content-box}table.dataTable td.dataTables_empty,table.dataTable th.dataTables_empty{text-align:center}table.dataTable.nowrap th,table.dataTable.nowrap td{white-space:nowrap}div.dataTables_wrapper div.dataTables_length label{font-weight:normal;text-align:left;white-space:nowrap}div.dataTables_wrapper div.dataTables_length select{width:75px;display:inline-block}div.dataTables_wrapper div.dataTables_filter{text-align:right}div.dataTables_wrapper div.dataTables_filter label{font-weight:normal;white-space:nowrap;text-align:left}div.dataTables_wrapper div.dataTables_filter input{margin-left:0.5em;display:inline-block;width:auto}div.dataTables_wrapper div.dataTables_info{padding-top:8px;white-space:nowrap}div.dataTables_wrapper div.dataTables_paginate{margin:0;white-space:nowrap;text-align:right}div.dataTables_wrapper div.dataTables_paginate ul.pagination{margin:2px 0;white-space:nowrap}div.dataTables_wrapper div.dataTables_processing{position:absolute;top:50%;left:50%;width:200px;margin-left:-100px;margin-top:-26px;text-align:center;padding:1em 0}table.dataTable thead>tr>th.sorting_asc,table.dataTable thead>tr>th.sorting_desc,table.dataTable thead>tr>th.sorting,table.dataTable thead>tr>td.sorting_asc,table.dataTable thead>tr>td.sorting_desc,table.dataTable thead>tr>td.sorting{padding-right:30px}table.dataTable thead>tr>th:active,table.dataTable thead>tr>td:active{outline:none}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_desc,table.dataTable thead .sorting_asc_disabled,table.dataTable thead .sorting_desc_disabled{cursor:pointer;position:relative}table.dataTable thead .sorting:after,table.dataTable thead .sorting_asc:after,table.dataTable thead .sorting_desc:after,table.dataTable thead .sorting_asc_disabled:after,table.dataTable thead .sorting_desc_disabled:after{position:absolute;bottom:8px;right:8px;display:block;font-family:'Glyphicons Halflings';opacity:0.5}table.dataTable thead .sorting:after{opacity:0.2;content:"\e150"}table.dataTable thead .sorting_asc:after{content:"\e155"}table.dataTable thead .sorting_desc:after{content:"\e156"}table.dataTable thead .sorting_asc_disabled:after,table.dataTable thead .sorting_desc_disabled:after{color:#eee}div.dataTables_scrollHead table.dataTable{margin-bottom:0 !important}div.dataTables_scrollBody>table{border-top:none;margin-top:0 !important;margin-bottom:0 !important}div.dataTables_scrollBody>table>thead .sorting:after,div.dataTables_scrollBody>table>thead .sorting_asc:after,div.dataTables_scrollBody>table>thead .sorting_desc:after{display:none}div.dataTables_scrollBody>table>tbody>tr:first-child>th,div.dataTables_scrollBody>table>tbody>tr:first-child>td{border-top:none}div.dataTables_scrollFoot>.dataTables_scrollFootInner{box-sizing:content-box}div.dataTables_scrollFoot>.dataTables_scrollFootInner>table{margin-top:0 !important;border-top:none}@media screen and (max-width: 767px){div.dataTables_wrapper div.dataTables_length,div.dataTables_wrapper div.dataTables_filter,div.dataTables_wrapper div.dataTables_info,div.dataTables_wrapper div.dataTables_paginate{text-align:center}}table.dataTable.table-condensed>thead>tr>th{padding-right:20px}table.dataTable.table-condensed .sorting:after,table.dataTable.table-condensed .sorting_asc:after,table.dataTable.table-condensed .sorting_desc:after{top:6px;right:6px}table.table-bordered.dataTable th,table.table-bordered.dataTable td{border-left-width:0}table.table-bordered.dataTable th:last-child,table.table-bordered.dataTable th:last-child,table.table-bordered.dataTable td:last-child,table.table-bordered.dataTable td:last-child{border-right-width:0}table.table-bordered.dataTable tbody th,table.table-bordered.dataTable tbody td{border-bottom-width:0}div.dataTables_scrollHead table.table-bordered{border-bottom-width:0}div.table-responsive>div.dataTables_wrapper>div.row{margin:0}div.table-responsive>div.dataTables_wrapper>div.row>div[class^="col-"]:first-child{padding-left:0}div.table-responsive>div.dataTables_wrapper>div.row>div[class^="col-"]:last-child{padding-right:0} diff --git a/konsultasi/libs/DataTable/DataTables-1.10.18/css/dataTables.bootstrap4.css b/konsultasi/libs/DataTable/DataTables-1.10.18/css/dataTables.bootstrap4.css new file mode 100644 index 0000000..84ec203 --- /dev/null +++ b/konsultasi/libs/DataTable/DataTables-1.10.18/css/dataTables.bootstrap4.css @@ -0,0 +1,206 @@ +table.dataTable { + clear: both; + margin-top: 6px !important; + margin-bottom: 6px !important; + max-width: none !important; + border-collapse: separate !important; + border-spacing: 0; +} +table.dataTable td, +table.dataTable th { + -webkit-box-sizing: content-box; + box-sizing: content-box; +} +table.dataTable td.dataTables_empty, +table.dataTable th.dataTables_empty { + text-align: center; +} +table.dataTable.nowrap th, +table.dataTable.nowrap td { + white-space: nowrap; +} + +div.dataTables_wrapper div.dataTables_length label { + font-weight: normal; + text-align: left; + white-space: nowrap; +} +div.dataTables_wrapper div.dataTables_length select { + width: auto; + display: inline-block; +} +div.dataTables_wrapper div.dataTables_filter { + text-align: right; +} +div.dataTables_wrapper div.dataTables_filter label { + font-weight: normal; + white-space: nowrap; + text-align: left; +} +div.dataTables_wrapper div.dataTables_filter input { + margin-left: 0.5em; + display: inline-block; + width: auto; +} +div.dataTables_wrapper div.dataTables_info { + padding-top: 0.85em; + white-space: nowrap; +} +div.dataTables_wrapper div.dataTables_paginate { + margin: 0; + white-space: nowrap; + text-align: right; +} +div.dataTables_wrapper div.dataTables_paginate ul.pagination { + margin: 2px 0; + white-space: nowrap; + justify-content: flex-end; +} +div.dataTables_wrapper div.dataTables_processing { + position: absolute; + top: 50%; + left: 50%; + width: 200px; + margin-left: -100px; + margin-top: -26px; + text-align: center; + padding: 1em 0; +} + +table.dataTable thead > tr > th.sorting_asc, table.dataTable thead > tr > th.sorting_desc, table.dataTable thead > tr > th.sorting, +table.dataTable thead > tr > td.sorting_asc, +table.dataTable thead > tr > td.sorting_desc, +table.dataTable thead > tr > td.sorting { + padding-right: 30px; +} +table.dataTable thead > tr > th:active, +table.dataTable thead > tr > td:active { + outline: none; +} +table.dataTable thead .sorting, +table.dataTable thead .sorting_asc, +table.dataTable thead .sorting_desc, +table.dataTable thead .sorting_asc_disabled, +table.dataTable thead .sorting_desc_disabled { + cursor: pointer; + position: relative; +} +table.dataTable thead .sorting:before, table.dataTable thead .sorting:after, +table.dataTable thead .sorting_asc:before, +table.dataTable thead .sorting_asc:after, +table.dataTable thead .sorting_desc:before, +table.dataTable thead .sorting_desc:after, +table.dataTable thead .sorting_asc_disabled:before, +table.dataTable thead .sorting_asc_disabled:after, +table.dataTable thead .sorting_desc_disabled:before, +table.dataTable thead .sorting_desc_disabled:after { + position: absolute; + bottom: 0.9em; + display: block; + opacity: 0.3; +} +table.dataTable thead .sorting:before, +table.dataTable thead .sorting_asc:before, +table.dataTable thead .sorting_desc:before, +table.dataTable thead .sorting_asc_disabled:before, +table.dataTable thead .sorting_desc_disabled:before { + right: 1em; + content: "\2191"; +} +table.dataTable thead .sorting:after, +table.dataTable thead .sorting_asc:after, +table.dataTable thead .sorting_desc:after, +table.dataTable thead .sorting_asc_disabled:after, +table.dataTable thead .sorting_desc_disabled:after { + right: 0.5em; + content: "\2193"; +} +table.dataTable thead .sorting_asc:before, +table.dataTable thead .sorting_desc:after { + opacity: 1; +} +table.dataTable thead .sorting_asc_disabled:before, +table.dataTable thead .sorting_desc_disabled:after { + opacity: 0; +} + +div.dataTables_scrollHead table.dataTable { + margin-bottom: 0 !important; +} + +div.dataTables_scrollBody table { + border-top: none; + margin-top: 0 !important; + margin-bottom: 0 !important; +} +div.dataTables_scrollBody table thead .sorting:before, +div.dataTables_scrollBody table thead .sorting_asc:before, +div.dataTables_scrollBody table thead .sorting_desc:before, +div.dataTables_scrollBody table thead .sorting:after, +div.dataTables_scrollBody table thead .sorting_asc:after, +div.dataTables_scrollBody table thead .sorting_desc:after { + display: none; +} +div.dataTables_scrollBody table tbody tr:first-child th, +div.dataTables_scrollBody table tbody tr:first-child td { + border-top: none; +} + +div.dataTables_scrollFoot > .dataTables_scrollFootInner { + box-sizing: content-box; +} +div.dataTables_scrollFoot > .dataTables_scrollFootInner > table { + margin-top: 0 !important; + border-top: none; +} + +@media screen and (max-width: 767px) { + div.dataTables_wrapper div.dataTables_length, + div.dataTables_wrapper div.dataTables_filter, + div.dataTables_wrapper div.dataTables_info, + div.dataTables_wrapper div.dataTables_paginate { + text-align: center; + } +} +table.dataTable.table-sm > thead > tr > th { + padding-right: 20px; +} +table.dataTable.table-sm .sorting:before, +table.dataTable.table-sm .sorting_asc:before, +table.dataTable.table-sm .sorting_desc:before { + top: 5px; + right: 0.85em; +} +table.dataTable.table-sm .sorting:after, +table.dataTable.table-sm .sorting_asc:after, +table.dataTable.table-sm .sorting_desc:after { + top: 5px; +} + +table.table-bordered.dataTable th, +table.table-bordered.dataTable td { + border-left-width: 0; +} +table.table-bordered.dataTable th:last-child, table.table-bordered.dataTable th:last-child, +table.table-bordered.dataTable td:last-child, +table.table-bordered.dataTable td:last-child { + border-right-width: 0; +} +table.table-bordered.dataTable tbody th, +table.table-bordered.dataTable tbody td { + border-bottom-width: 0; +} + +div.dataTables_scrollHead table.table-bordered { + border-bottom-width: 0; +} + +div.table-responsive > div.dataTables_wrapper > div.row { + margin: 0; +} +div.table-responsive > div.dataTables_wrapper > div.row > div[class^="col-"]:first-child { + padding-left: 0; +} +div.table-responsive > div.dataTables_wrapper > div.row > div[class^="col-"]:last-child { + padding-right: 0; +} diff --git a/konsultasi/libs/DataTable/DataTables-1.10.18/css/dataTables.bootstrap4.min.css b/konsultasi/libs/DataTable/DataTables-1.10.18/css/dataTables.bootstrap4.min.css new file mode 100644 index 0000000..f1930be --- /dev/null +++ b/konsultasi/libs/DataTable/DataTables-1.10.18/css/dataTables.bootstrap4.min.css @@ -0,0 +1 @@ +table.dataTable{clear:both;margin-top:6px !important;margin-bottom:6px !important;max-width:none !important;border-collapse:separate !important;border-spacing:0}table.dataTable td,table.dataTable th{-webkit-box-sizing:content-box;box-sizing:content-box}table.dataTable td.dataTables_empty,table.dataTable th.dataTables_empty{text-align:center}table.dataTable.nowrap th,table.dataTable.nowrap td{white-space:nowrap}div.dataTables_wrapper div.dataTables_length label{font-weight:normal;text-align:left;white-space:nowrap}div.dataTables_wrapper div.dataTables_length select{width:auto;display:inline-block}div.dataTables_wrapper div.dataTables_filter{text-align:right}div.dataTables_wrapper div.dataTables_filter label{font-weight:normal;white-space:nowrap;text-align:left}div.dataTables_wrapper div.dataTables_filter input{margin-left:0.5em;display:inline-block;width:auto}div.dataTables_wrapper div.dataTables_info{padding-top:0.85em;white-space:nowrap}div.dataTables_wrapper div.dataTables_paginate{margin:0;white-space:nowrap;text-align:right}div.dataTables_wrapper div.dataTables_paginate ul.pagination{margin:2px 0;white-space:nowrap;justify-content:flex-end}div.dataTables_wrapper div.dataTables_processing{position:absolute;top:50%;left:50%;width:200px;margin-left:-100px;margin-top:-26px;text-align:center;padding:1em 0}table.dataTable thead>tr>th.sorting_asc,table.dataTable thead>tr>th.sorting_desc,table.dataTable thead>tr>th.sorting,table.dataTable thead>tr>td.sorting_asc,table.dataTable thead>tr>td.sorting_desc,table.dataTable thead>tr>td.sorting{padding-right:30px}table.dataTable thead>tr>th:active,table.dataTable thead>tr>td:active{outline:none}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_desc,table.dataTable thead .sorting_asc_disabled,table.dataTable thead .sorting_desc_disabled{cursor:pointer;position:relative}table.dataTable thead .sorting:before,table.dataTable thead .sorting:after,table.dataTable thead .sorting_asc:before,table.dataTable thead .sorting_asc:after,table.dataTable thead .sorting_desc:before,table.dataTable thead .sorting_desc:after,table.dataTable thead .sorting_asc_disabled:before,table.dataTable thead .sorting_asc_disabled:after,table.dataTable thead .sorting_desc_disabled:before,table.dataTable thead .sorting_desc_disabled:after{position:absolute;bottom:0.9em;display:block;opacity:0.3}table.dataTable thead .sorting:before,table.dataTable thead .sorting_asc:before,table.dataTable thead .sorting_desc:before,table.dataTable thead .sorting_asc_disabled:before,table.dataTable thead .sorting_desc_disabled:before{right:1em;content:"\2191"}table.dataTable thead .sorting:after,table.dataTable thead .sorting_asc:after,table.dataTable thead .sorting_desc:after,table.dataTable thead .sorting_asc_disabled:after,table.dataTable thead .sorting_desc_disabled:after{right:0.5em;content:"\2193"}table.dataTable thead .sorting_asc:before,table.dataTable thead .sorting_desc:after{opacity:1}table.dataTable thead .sorting_asc_disabled:before,table.dataTable thead .sorting_desc_disabled:after{opacity:0}div.dataTables_scrollHead table.dataTable{margin-bottom:0 !important}div.dataTables_scrollBody table{border-top:none;margin-top:0 !important;margin-bottom:0 !important}div.dataTables_scrollBody table thead .sorting:before,div.dataTables_scrollBody table thead .sorting_asc:before,div.dataTables_scrollBody table thead .sorting_desc:before,div.dataTables_scrollBody table thead .sorting:after,div.dataTables_scrollBody table thead .sorting_asc:after,div.dataTables_scrollBody table thead .sorting_desc:after{display:none}div.dataTables_scrollBody table tbody tr:first-child th,div.dataTables_scrollBody table tbody tr:first-child td{border-top:none}div.dataTables_scrollFoot>.dataTables_scrollFootInner{box-sizing:content-box}div.dataTables_scrollFoot>.dataTables_scrollFootInner>table{margin-top:0 !important;border-top:none}@media screen and (max-width: 767px){div.dataTables_wrapper div.dataTables_length,div.dataTables_wrapper div.dataTables_filter,div.dataTables_wrapper div.dataTables_info,div.dataTables_wrapper div.dataTables_paginate{text-align:center}}table.dataTable.table-sm>thead>tr>th{padding-right:20px}table.dataTable.table-sm .sorting:before,table.dataTable.table-sm .sorting_asc:before,table.dataTable.table-sm .sorting_desc:before{top:5px;right:0.85em}table.dataTable.table-sm .sorting:after,table.dataTable.table-sm .sorting_asc:after,table.dataTable.table-sm .sorting_desc:after{top:5px}table.table-bordered.dataTable th,table.table-bordered.dataTable td{border-left-width:0}table.table-bordered.dataTable th:last-child,table.table-bordered.dataTable th:last-child,table.table-bordered.dataTable td:last-child,table.table-bordered.dataTable td:last-child{border-right-width:0}table.table-bordered.dataTable tbody th,table.table-bordered.dataTable tbody td{border-bottom-width:0}div.dataTables_scrollHead table.table-bordered{border-bottom-width:0}div.table-responsive>div.dataTables_wrapper>div.row{margin:0}div.table-responsive>div.dataTables_wrapper>div.row>div[class^="col-"]:first-child{padding-left:0}div.table-responsive>div.dataTables_wrapper>div.row>div[class^="col-"]:last-child{padding-right:0} diff --git a/konsultasi/libs/DataTable/DataTables-1.10.18/css/dataTables.foundation.css b/konsultasi/libs/DataTable/DataTables-1.10.18/css/dataTables.foundation.css new file mode 100644 index 0000000..79848c9 --- /dev/null +++ b/konsultasi/libs/DataTable/DataTables-1.10.18/css/dataTables.foundation.css @@ -0,0 +1,118 @@ +table.dataTable { + clear: both; + margin: 0.5em 0 !important; + max-width: none !important; + width: 100%; +} +table.dataTable td, +table.dataTable th { + -webkit-box-sizing: content-box; + box-sizing: content-box; +} +table.dataTable td.dataTables_empty, +table.dataTable th.dataTables_empty { + text-align: center; +} +table.dataTable.nowrap th, table.dataTable.nowrap td { + white-space: nowrap; +} + +div.dataTables_wrapper { + position: relative; +} +div.dataTables_wrapper div.dataTables_length label { + float: left; + text-align: left; + margin-bottom: 0; +} +div.dataTables_wrapper div.dataTables_length select { + width: 75px; + margin-bottom: 0; +} +div.dataTables_wrapper div.dataTables_filter label { + float: right; + margin-bottom: 0; +} +div.dataTables_wrapper div.dataTables_filter input { + display: inline-block !important; + width: auto !important; + margin-bottom: 0; + margin-left: 0.5em; +} +div.dataTables_wrapper div.dataTables_info { + padding-top: 2px; +} +div.dataTables_wrapper div.dataTables_paginate { + float: right; + margin: 0; +} +div.dataTables_wrapper div.dataTables_processing { + position: absolute; + top: 50%; + left: 50%; + width: 200px; + margin-left: -100px; + margin-top: -26px; + text-align: center; + padding: 1rem 0; +} + +table.dataTable thead > tr > th.sorting_asc, table.dataTable thead > tr > th.sorting_desc, table.dataTable thead > tr > th.sorting, +table.dataTable thead > tr > td.sorting_asc, +table.dataTable thead > tr > td.sorting_desc, +table.dataTable thead > tr > td.sorting { + padding-right: 1.5rem; +} +table.dataTable thead > tr > th:active, +table.dataTable thead > tr > td:active { + outline: none; +} +table.dataTable thead .sorting, +table.dataTable thead .sorting_asc, +table.dataTable thead .sorting_desc, +table.dataTable thead .sorting_asc_disabled, +table.dataTable thead .sorting_desc_disabled { + cursor: pointer; +} +table.dataTable thead .sorting, +table.dataTable thead .sorting_asc, +table.dataTable thead .sorting_desc, +table.dataTable thead .sorting_asc_disabled, +table.dataTable thead .sorting_desc_disabled { + background-repeat: no-repeat; + background-position: center right; +} +table.dataTable thead .sorting { + background-image: url("../images/sort_both.png"); +} +table.dataTable thead .sorting_asc { + background-image: url("../images/sort_asc.png"); +} +table.dataTable thead .sorting_desc { + background-image: url("../images/sort_desc.png"); +} +table.dataTable thead .sorting_asc_disabled { + background-image: url("../images/sort_asc_disabled.png"); +} +table.dataTable thead .sorting_desc_disabled { + background-image: url("../images/sort_desc_disabled.png"); +} + +div.dataTables_scrollHead table { + margin-bottom: 0 !important; +} + +div.dataTables_scrollBody table { + border-top: none; + margin-top: 0 !important; + margin-bottom: 0 !important; +} +div.dataTables_scrollBody table tbody tr:first-child th, +div.dataTables_scrollBody table tbody tr:first-child td { + border-top: none; +} + +div.dataTables_scrollFoot table { + margin-top: 0 !important; + border-top: none; +} diff --git a/konsultasi/libs/DataTable/DataTables-1.10.18/css/dataTables.foundation.min.css b/konsultasi/libs/DataTable/DataTables-1.10.18/css/dataTables.foundation.min.css new file mode 100644 index 0000000..73af41e --- /dev/null +++ b/konsultasi/libs/DataTable/DataTables-1.10.18/css/dataTables.foundation.min.css @@ -0,0 +1 @@ +table.dataTable{clear:both;margin:0.5em 0 !important;max-width:none !important;width:100%}table.dataTable td,table.dataTable th{-webkit-box-sizing:content-box;box-sizing:content-box}table.dataTable td.dataTables_empty,table.dataTable th.dataTables_empty{text-align:center}table.dataTable.nowrap th,table.dataTable.nowrap td{white-space:nowrap}div.dataTables_wrapper{position:relative}div.dataTables_wrapper div.dataTables_length label{float:left;text-align:left;margin-bottom:0}div.dataTables_wrapper div.dataTables_length select{width:75px;margin-bottom:0}div.dataTables_wrapper div.dataTables_filter label{float:right;margin-bottom:0}div.dataTables_wrapper div.dataTables_filter input{display:inline-block !important;width:auto !important;margin-bottom:0;margin-left:0.5em}div.dataTables_wrapper div.dataTables_info{padding-top:2px}div.dataTables_wrapper div.dataTables_paginate{float:right;margin:0}div.dataTables_wrapper div.dataTables_processing{position:absolute;top:50%;left:50%;width:200px;margin-left:-100px;margin-top:-26px;text-align:center;padding:1rem 0}table.dataTable thead>tr>th.sorting_asc,table.dataTable thead>tr>th.sorting_desc,table.dataTable thead>tr>th.sorting,table.dataTable thead>tr>td.sorting_asc,table.dataTable thead>tr>td.sorting_desc,table.dataTable thead>tr>td.sorting{padding-right:1.5rem}table.dataTable thead>tr>th:active,table.dataTable thead>tr>td:active{outline:none}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_desc,table.dataTable thead .sorting_asc_disabled,table.dataTable thead .sorting_desc_disabled{cursor:pointer}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_desc,table.dataTable thead .sorting_asc_disabled,table.dataTable thead .sorting_desc_disabled{background-repeat:no-repeat;background-position:center right}table.dataTable thead .sorting{background-image:url("../images/sort_both.png")}table.dataTable thead .sorting_asc{background-image:url("../images/sort_asc.png")}table.dataTable thead .sorting_desc{background-image:url("../images/sort_desc.png")}table.dataTable thead .sorting_asc_disabled{background-image:url("../images/sort_asc_disabled.png")}table.dataTable thead .sorting_desc_disabled{background-image:url("../images/sort_desc_disabled.png")}div.dataTables_scrollHead table{margin-bottom:0 !important}div.dataTables_scrollBody table{border-top:none;margin-top:0 !important;margin-bottom:0 !important}div.dataTables_scrollBody table tbody tr:first-child th,div.dataTables_scrollBody table tbody tr:first-child td{border-top:none}div.dataTables_scrollFoot table{margin-top:0 !important;border-top:none} diff --git a/konsultasi/libs/DataTable/DataTables-1.10.18/css/dataTables.jqueryui.css b/konsultasi/libs/DataTable/DataTables-1.10.18/css/dataTables.jqueryui.css new file mode 100644 index 0000000..5070b04 --- /dev/null +++ b/konsultasi/libs/DataTable/DataTables-1.10.18/css/dataTables.jqueryui.css @@ -0,0 +1,481 @@ +/* + * Table styles + */ +table.dataTable { + width: 100%; + margin: 0 auto; + clear: both; + border-collapse: separate; + border-spacing: 0; + /* + * Header and footer styles + */ + /* + * Body styles + */ +} +table.dataTable thead th, +table.dataTable tfoot th { + font-weight: bold; +} +table.dataTable thead th, +table.dataTable thead td { + padding: 10px 18px; +} +table.dataTable thead th:active, +table.dataTable thead td:active { + outline: none; +} +table.dataTable tfoot th, +table.dataTable tfoot td { + padding: 10px 18px 6px 18px; +} +table.dataTable tbody tr { + background-color: #ffffff; +} +table.dataTable tbody tr.selected { + background-color: #B0BED9; +} +table.dataTable tbody th, +table.dataTable tbody td { + padding: 8px 10px; +} +table.dataTable.row-border tbody th, table.dataTable.row-border tbody td, table.dataTable.display tbody th, table.dataTable.display tbody td { + border-top: 1px solid #ddd; +} +table.dataTable.row-border tbody tr:first-child th, +table.dataTable.row-border tbody tr:first-child td, table.dataTable.display tbody tr:first-child th, +table.dataTable.display tbody tr:first-child td { + border-top: none; +} +table.dataTable.cell-border tbody th, table.dataTable.cell-border tbody td { + border-top: 1px solid #ddd; + border-right: 1px solid #ddd; +} +table.dataTable.cell-border tbody tr th:first-child, +table.dataTable.cell-border tbody tr td:first-child { + border-left: 1px solid #ddd; +} +table.dataTable.cell-border tbody tr:first-child th, +table.dataTable.cell-border tbody tr:first-child td { + border-top: none; +} +table.dataTable.stripe tbody tr.odd, table.dataTable.display tbody tr.odd { + background-color: #f9f9f9; +} +table.dataTable.stripe tbody tr.odd.selected, table.dataTable.display tbody tr.odd.selected { + background-color: #acbad4; +} +table.dataTable.hover tbody tr:hover, table.dataTable.display tbody tr:hover { + background-color: #f6f6f6; +} +table.dataTable.hover tbody tr:hover.selected, table.dataTable.display tbody tr:hover.selected { + background-color: #aab7d1; +} +table.dataTable.order-column tbody tr > .sorting_1, +table.dataTable.order-column tbody tr > .sorting_2, +table.dataTable.order-column tbody tr > .sorting_3, table.dataTable.display tbody tr > .sorting_1, +table.dataTable.display tbody tr > .sorting_2, +table.dataTable.display tbody tr > .sorting_3 { + background-color: #fafafa; +} +table.dataTable.order-column tbody tr.selected > .sorting_1, +table.dataTable.order-column tbody tr.selected > .sorting_2, +table.dataTable.order-column tbody tr.selected > .sorting_3, table.dataTable.display tbody tr.selected > .sorting_1, +table.dataTable.display tbody tr.selected > .sorting_2, +table.dataTable.display tbody tr.selected > .sorting_3 { + background-color: #acbad5; +} +table.dataTable.display tbody tr.odd > .sorting_1, table.dataTable.order-column.stripe tbody tr.odd > .sorting_1 { + background-color: #f1f1f1; +} +table.dataTable.display tbody tr.odd > .sorting_2, table.dataTable.order-column.stripe tbody tr.odd > .sorting_2 { + background-color: #f3f3f3; +} +table.dataTable.display tbody tr.odd > .sorting_3, table.dataTable.order-column.stripe tbody tr.odd > .sorting_3 { + background-color: whitesmoke; +} +table.dataTable.display tbody tr.odd.selected > .sorting_1, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_1 { + background-color: #a6b4cd; +} +table.dataTable.display tbody tr.odd.selected > .sorting_2, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_2 { + background-color: #a8b5cf; +} +table.dataTable.display tbody tr.odd.selected > .sorting_3, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_3 { + background-color: #a9b7d1; +} +table.dataTable.display tbody tr.even > .sorting_1, table.dataTable.order-column.stripe tbody tr.even > .sorting_1 { + background-color: #fafafa; +} +table.dataTable.display tbody tr.even > .sorting_2, table.dataTable.order-column.stripe tbody tr.even > .sorting_2 { + background-color: #fcfcfc; +} +table.dataTable.display tbody tr.even > .sorting_3, table.dataTable.order-column.stripe tbody tr.even > .sorting_3 { + background-color: #fefefe; +} +table.dataTable.display tbody tr.even.selected > .sorting_1, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_1 { + background-color: #acbad5; +} +table.dataTable.display tbody tr.even.selected > .sorting_2, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_2 { + background-color: #aebcd6; +} +table.dataTable.display tbody tr.even.selected > .sorting_3, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_3 { + background-color: #afbdd8; +} +table.dataTable.display tbody tr:hover > .sorting_1, table.dataTable.order-column.hover tbody tr:hover > .sorting_1 { + background-color: #eaeaea; +} +table.dataTable.display tbody tr:hover > .sorting_2, table.dataTable.order-column.hover tbody tr:hover > .sorting_2 { + background-color: #ececec; +} +table.dataTable.display tbody tr:hover > .sorting_3, table.dataTable.order-column.hover tbody tr:hover > .sorting_3 { + background-color: #efefef; +} +table.dataTable.display tbody tr:hover.selected > .sorting_1, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_1 { + background-color: #a2aec7; +} +table.dataTable.display tbody tr:hover.selected > .sorting_2, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_2 { + background-color: #a3b0c9; +} +table.dataTable.display tbody tr:hover.selected > .sorting_3, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_3 { + background-color: #a5b2cb; +} +table.dataTable.no-footer { + border-bottom: 1px solid #111; +} +table.dataTable.nowrap th, table.dataTable.nowrap td { + white-space: nowrap; +} +table.dataTable.compact thead th, +table.dataTable.compact thead td { + padding: 4px 17px 4px 4px; +} +table.dataTable.compact tfoot th, +table.dataTable.compact tfoot td { + padding: 4px; +} +table.dataTable.compact tbody th, +table.dataTable.compact tbody td { + padding: 4px; +} +table.dataTable th.dt-left, +table.dataTable td.dt-left { + text-align: left; +} +table.dataTable th.dt-center, +table.dataTable td.dt-center, +table.dataTable td.dataTables_empty { + text-align: center; +} +table.dataTable th.dt-right, +table.dataTable td.dt-right { + text-align: right; +} +table.dataTable th.dt-justify, +table.dataTable td.dt-justify { + text-align: justify; +} +table.dataTable th.dt-nowrap, +table.dataTable td.dt-nowrap { + white-space: nowrap; +} +table.dataTable thead th.dt-head-left, +table.dataTable thead td.dt-head-left, +table.dataTable tfoot th.dt-head-left, +table.dataTable tfoot td.dt-head-left { + text-align: left; +} +table.dataTable thead th.dt-head-center, +table.dataTable thead td.dt-head-center, +table.dataTable tfoot th.dt-head-center, +table.dataTable tfoot td.dt-head-center { + text-align: center; +} +table.dataTable thead th.dt-head-right, +table.dataTable thead td.dt-head-right, +table.dataTable tfoot th.dt-head-right, +table.dataTable tfoot td.dt-head-right { + text-align: right; +} +table.dataTable thead th.dt-head-justify, +table.dataTable thead td.dt-head-justify, +table.dataTable tfoot th.dt-head-justify, +table.dataTable tfoot td.dt-head-justify { + text-align: justify; +} +table.dataTable thead th.dt-head-nowrap, +table.dataTable thead td.dt-head-nowrap, +table.dataTable tfoot th.dt-head-nowrap, +table.dataTable tfoot td.dt-head-nowrap { + white-space: nowrap; +} +table.dataTable tbody th.dt-body-left, +table.dataTable tbody td.dt-body-left { + text-align: left; +} +table.dataTable tbody th.dt-body-center, +table.dataTable tbody td.dt-body-center { + text-align: center; +} +table.dataTable tbody th.dt-body-right, +table.dataTable tbody td.dt-body-right { + text-align: right; +} +table.dataTable tbody th.dt-body-justify, +table.dataTable tbody td.dt-body-justify { + text-align: justify; +} +table.dataTable tbody th.dt-body-nowrap, +table.dataTable tbody td.dt-body-nowrap { + white-space: nowrap; +} + +table.dataTable, +table.dataTable th, +table.dataTable td { + box-sizing: content-box; +} + +/* + * Control feature layout + */ +.dataTables_wrapper { + position: relative; + clear: both; + *zoom: 1; + zoom: 1; +} +.dataTables_wrapper .dataTables_length { + float: left; +} +.dataTables_wrapper .dataTables_filter { + float: right; + text-align: right; +} +.dataTables_wrapper .dataTables_filter input { + margin-left: 0.5em; +} +.dataTables_wrapper .dataTables_info { + clear: both; + float: left; + padding-top: 0.755em; +} +.dataTables_wrapper .dataTables_paginate { + float: right; + text-align: right; + padding-top: 0.25em; +} +.dataTables_wrapper .dataTables_paginate .paginate_button { + box-sizing: border-box; + display: inline-block; + min-width: 1.5em; + padding: 0.5em 1em; + margin-left: 2px; + text-align: center; + text-decoration: none !important; + cursor: pointer; + *cursor: hand; + color: #333 !important; + border: 1px solid transparent; + border-radius: 2px; +} +.dataTables_wrapper .dataTables_paginate .paginate_button.current, .dataTables_wrapper .dataTables_paginate .paginate_button.current:hover { + color: #333 !important; + border: 1px solid #979797; + background-color: white; + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, white), color-stop(100%, #dcdcdc)); + /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(top, white 0%, #dcdcdc 100%); + /* Chrome10+,Safari5.1+ */ + background: -moz-linear-gradient(top, white 0%, #dcdcdc 100%); + /* FF3.6+ */ + background: -ms-linear-gradient(top, white 0%, #dcdcdc 100%); + /* IE10+ */ + background: -o-linear-gradient(top, white 0%, #dcdcdc 100%); + /* Opera 11.10+ */ + background: linear-gradient(to bottom, white 0%, #dcdcdc 100%); + /* W3C */ +} +.dataTables_wrapper .dataTables_paginate .paginate_button.disabled, .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover, .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active { + cursor: default; + color: #666 !important; + border: 1px solid transparent; + background: transparent; + box-shadow: none; +} +.dataTables_wrapper .dataTables_paginate .paginate_button:hover { + color: white !important; + border: 1px solid #111; + background-color: #585858; + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #585858), color-stop(100%, #111)); + /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(top, #585858 0%, #111 100%); + /* Chrome10+,Safari5.1+ */ + background: -moz-linear-gradient(top, #585858 0%, #111 100%); + /* FF3.6+ */ + background: -ms-linear-gradient(top, #585858 0%, #111 100%); + /* IE10+ */ + background: -o-linear-gradient(top, #585858 0%, #111 100%); + /* Opera 11.10+ */ + background: linear-gradient(to bottom, #585858 0%, #111 100%); + /* W3C */ +} +.dataTables_wrapper .dataTables_paginate .paginate_button:active { + outline: none; + background-color: #2b2b2b; + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #2b2b2b), color-stop(100%, #0c0c0c)); + /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); + /* Chrome10+,Safari5.1+ */ + background: -moz-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); + /* FF3.6+ */ + background: -ms-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); + /* IE10+ */ + background: -o-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); + /* Opera 11.10+ */ + background: linear-gradient(to bottom, #2b2b2b 0%, #0c0c0c 100%); + /* W3C */ + box-shadow: inset 0 0 3px #111; +} +.dataTables_wrapper .dataTables_paginate .ellipsis { + padding: 0 1em; +} +.dataTables_wrapper .dataTables_processing { + position: absolute; + top: 50%; + left: 50%; + width: 100%; + height: 40px; + margin-left: -50%; + margin-top: -25px; + padding-top: 20px; + text-align: center; + font-size: 1.2em; + background-color: white; + background: -webkit-gradient(linear, left top, right top, color-stop(0%, rgba(255, 255, 255, 0)), color-stop(25%, rgba(255, 255, 255, 0.9)), color-stop(75%, rgba(255, 255, 255, 0.9)), color-stop(100%, rgba(255, 255, 255, 0))); + background: -webkit-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); + background: -moz-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); + background: -ms-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); + background: -o-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); + background: linear-gradient(to right, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); +} +.dataTables_wrapper .dataTables_length, +.dataTables_wrapper .dataTables_filter, +.dataTables_wrapper .dataTables_info, +.dataTables_wrapper .dataTables_processing, +.dataTables_wrapper .dataTables_paginate { + color: #333; +} +.dataTables_wrapper .dataTables_scroll { + clear: both; +} +.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody { + *margin-top: -1px; + -webkit-overflow-scrolling: touch; +} +.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > th, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > td, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > th, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > td { + vertical-align: middle; +} +.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > th > div.dataTables_sizing, +.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > td > div.dataTables_sizing, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > th > div.dataTables_sizing, +.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > td > div.dataTables_sizing { + height: 0; + overflow: hidden; + margin: 0 !important; + padding: 0 !important; +} +.dataTables_wrapper.no-footer .dataTables_scrollBody { + border-bottom: 1px solid #111; +} +.dataTables_wrapper.no-footer div.dataTables_scrollHead table.dataTable, +.dataTables_wrapper.no-footer div.dataTables_scrollBody > table { + border-bottom: none; +} +.dataTables_wrapper:after { + visibility: hidden; + display: block; + content: ""; + clear: both; + height: 0; +} + +@media screen and (max-width: 767px) { + .dataTables_wrapper .dataTables_info, + .dataTables_wrapper .dataTables_paginate { + float: none; + text-align: center; + } + .dataTables_wrapper .dataTables_paginate { + margin-top: 0.5em; + } +} +@media screen and (max-width: 640px) { + .dataTables_wrapper .dataTables_length, + .dataTables_wrapper .dataTables_filter { + float: none; + text-align: center; + } + .dataTables_wrapper .dataTables_filter { + margin-top: 0.5em; + } +} +table.dataTable thead th div.DataTables_sort_wrapper { + position: relative; +} +table.dataTable thead th div.DataTables_sort_wrapper span { + position: absolute; + top: 50%; + margin-top: -8px; + right: -18px; +} +table.dataTable thead th.ui-state-default, +table.dataTable tfoot th.ui-state-default { + border-left-width: 0; +} +table.dataTable thead th.ui-state-default:first-child, +table.dataTable tfoot th.ui-state-default:first-child { + border-left-width: 1px; +} + +/* + * Control feature layout + */ +.dataTables_wrapper .dataTables_paginate .fg-button { + box-sizing: border-box; + display: inline-block; + min-width: 1.5em; + padding: 0.5em; + margin-left: 2px; + text-align: center; + text-decoration: none !important; + cursor: pointer; + *cursor: hand; + border: 1px solid transparent; +} +.dataTables_wrapper .dataTables_paginate .fg-button:active { + outline: none; +} +.dataTables_wrapper .dataTables_paginate .fg-button:first-child { + border-top-left-radius: 3px; + border-bottom-left-radius: 3px; +} +.dataTables_wrapper .dataTables_paginate .fg-button:last-child { + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; +} +.dataTables_wrapper .ui-widget-header { + font-weight: normal; +} +.dataTables_wrapper .ui-toolbar { + padding: 8px; +} +.dataTables_wrapper.no-footer .dataTables_scrollBody { + border-bottom: none; +} +.dataTables_wrapper .dataTables_length, +.dataTables_wrapper .dataTables_filter, +.dataTables_wrapper .dataTables_info, +.dataTables_wrapper .dataTables_processing, +.dataTables_wrapper .dataTables_paginate { + color: inherit; +} diff --git a/konsultasi/libs/DataTable/DataTables-1.10.18/css/dataTables.jqueryui.min.css b/konsultasi/libs/DataTable/DataTables-1.10.18/css/dataTables.jqueryui.min.css new file mode 100644 index 0000000..4e99c26 --- /dev/null +++ b/konsultasi/libs/DataTable/DataTables-1.10.18/css/dataTables.jqueryui.min.css @@ -0,0 +1 @@ +table.dataTable{width:100%;margin:0 auto;clear:both;border-collapse:separate;border-spacing:0}table.dataTable thead th,table.dataTable tfoot th{font-weight:bold}table.dataTable thead th,table.dataTable thead td{padding:10px 18px}table.dataTable thead th:active,table.dataTable thead td:active{outline:none}table.dataTable tfoot th,table.dataTable tfoot td{padding:10px 18px 6px 18px}table.dataTable tbody tr{background-color:#ffffff}table.dataTable tbody tr.selected{background-color:#B0BED9}table.dataTable tbody th,table.dataTable tbody td{padding:8px 10px}table.dataTable.row-border tbody th,table.dataTable.row-border tbody td,table.dataTable.display tbody th,table.dataTable.display tbody td{border-top:1px solid #ddd}table.dataTable.row-border tbody tr:first-child th,table.dataTable.row-border tbody tr:first-child td,table.dataTable.display tbody tr:first-child th,table.dataTable.display tbody tr:first-child td{border-top:none}table.dataTable.cell-border tbody th,table.dataTable.cell-border tbody td{border-top:1px solid #ddd;border-right:1px solid #ddd}table.dataTable.cell-border tbody tr th:first-child,table.dataTable.cell-border tbody tr td:first-child{border-left:1px solid #ddd}table.dataTable.cell-border tbody tr:first-child th,table.dataTable.cell-border tbody tr:first-child td{border-top:none}table.dataTable.stripe tbody tr.odd,table.dataTable.display tbody tr.odd{background-color:#f9f9f9}table.dataTable.stripe tbody tr.odd.selected,table.dataTable.display tbody tr.odd.selected{background-color:#acbad4}table.dataTable.hover tbody tr:hover,table.dataTable.display tbody tr:hover{background-color:#f6f6f6}table.dataTable.hover tbody tr:hover.selected,table.dataTable.display tbody tr:hover.selected{background-color:#aab7d1}table.dataTable.order-column tbody tr>.sorting_1,table.dataTable.order-column tbody tr>.sorting_2,table.dataTable.order-column tbody tr>.sorting_3,table.dataTable.display tbody tr>.sorting_1,table.dataTable.display tbody tr>.sorting_2,table.dataTable.display tbody tr>.sorting_3{background-color:#fafafa}table.dataTable.order-column tbody tr.selected>.sorting_1,table.dataTable.order-column tbody tr.selected>.sorting_2,table.dataTable.order-column tbody tr.selected>.sorting_3,table.dataTable.display tbody tr.selected>.sorting_1,table.dataTable.display tbody tr.selected>.sorting_2,table.dataTable.display tbody tr.selected>.sorting_3{background-color:#acbad5}table.dataTable.display tbody tr.odd>.sorting_1,table.dataTable.order-column.stripe tbody tr.odd>.sorting_1{background-color:#f1f1f1}table.dataTable.display tbody tr.odd>.sorting_2,table.dataTable.order-column.stripe tbody tr.odd>.sorting_2{background-color:#f3f3f3}table.dataTable.display tbody tr.odd>.sorting_3,table.dataTable.order-column.stripe tbody tr.odd>.sorting_3{background-color:whitesmoke}table.dataTable.display tbody tr.odd.selected>.sorting_1,table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_1{background-color:#a6b4cd}table.dataTable.display tbody tr.odd.selected>.sorting_2,table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_2{background-color:#a8b5cf}table.dataTable.display tbody tr.odd.selected>.sorting_3,table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_3{background-color:#a9b7d1}table.dataTable.display tbody tr.even>.sorting_1,table.dataTable.order-column.stripe tbody tr.even>.sorting_1{background-color:#fafafa}table.dataTable.display tbody tr.even>.sorting_2,table.dataTable.order-column.stripe tbody tr.even>.sorting_2{background-color:#fcfcfc}table.dataTable.display tbody tr.even>.sorting_3,table.dataTable.order-column.stripe tbody tr.even>.sorting_3{background-color:#fefefe}table.dataTable.display tbody tr.even.selected>.sorting_1,table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_1{background-color:#acbad5}table.dataTable.display tbody tr.even.selected>.sorting_2,table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_2{background-color:#aebcd6}table.dataTable.display tbody tr.even.selected>.sorting_3,table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_3{background-color:#afbdd8}table.dataTable.display tbody tr:hover>.sorting_1,table.dataTable.order-column.hover tbody tr:hover>.sorting_1{background-color:#eaeaea}table.dataTable.display tbody tr:hover>.sorting_2,table.dataTable.order-column.hover tbody tr:hover>.sorting_2{background-color:#ececec}table.dataTable.display tbody tr:hover>.sorting_3,table.dataTable.order-column.hover tbody tr:hover>.sorting_3{background-color:#efefef}table.dataTable.display tbody tr:hover.selected>.sorting_1,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_1{background-color:#a2aec7}table.dataTable.display tbody tr:hover.selected>.sorting_2,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_2{background-color:#a3b0c9}table.dataTable.display tbody tr:hover.selected>.sorting_3,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_3{background-color:#a5b2cb}table.dataTable.no-footer{border-bottom:1px solid #111}table.dataTable.nowrap th,table.dataTable.nowrap td{white-space:nowrap}table.dataTable.compact thead th,table.dataTable.compact thead td{padding:4px 17px 4px 4px}table.dataTable.compact tfoot th,table.dataTable.compact tfoot td{padding:4px}table.dataTable.compact tbody th,table.dataTable.compact tbody td{padding:4px}table.dataTable th.dt-left,table.dataTable td.dt-left{text-align:left}table.dataTable th.dt-center,table.dataTable td.dt-center,table.dataTable td.dataTables_empty{text-align:center}table.dataTable th.dt-right,table.dataTable td.dt-right{text-align:right}table.dataTable th.dt-justify,table.dataTable td.dt-justify{text-align:justify}table.dataTable th.dt-nowrap,table.dataTable td.dt-nowrap{white-space:nowrap}table.dataTable thead th.dt-head-left,table.dataTable thead td.dt-head-left,table.dataTable tfoot th.dt-head-left,table.dataTable tfoot td.dt-head-left{text-align:left}table.dataTable thead th.dt-head-center,table.dataTable thead td.dt-head-center,table.dataTable tfoot th.dt-head-center,table.dataTable tfoot td.dt-head-center{text-align:center}table.dataTable thead th.dt-head-right,table.dataTable thead td.dt-head-right,table.dataTable tfoot th.dt-head-right,table.dataTable tfoot td.dt-head-right{text-align:right}table.dataTable thead th.dt-head-justify,table.dataTable thead td.dt-head-justify,table.dataTable tfoot th.dt-head-justify,table.dataTable tfoot td.dt-head-justify{text-align:justify}table.dataTable thead th.dt-head-nowrap,table.dataTable thead td.dt-head-nowrap,table.dataTable tfoot th.dt-head-nowrap,table.dataTable tfoot td.dt-head-nowrap{white-space:nowrap}table.dataTable tbody th.dt-body-left,table.dataTable tbody td.dt-body-left{text-align:left}table.dataTable tbody th.dt-body-center,table.dataTable tbody td.dt-body-center{text-align:center}table.dataTable tbody th.dt-body-right,table.dataTable tbody td.dt-body-right{text-align:right}table.dataTable tbody th.dt-body-justify,table.dataTable tbody td.dt-body-justify{text-align:justify}table.dataTable tbody th.dt-body-nowrap,table.dataTable tbody td.dt-body-nowrap{white-space:nowrap}table.dataTable,table.dataTable th,table.dataTable td{box-sizing:content-box}.dataTables_wrapper{position:relative;clear:both;*zoom:1;zoom:1}.dataTables_wrapper .dataTables_length{float:left}.dataTables_wrapper .dataTables_filter{float:right;text-align:right}.dataTables_wrapper .dataTables_filter input{margin-left:0.5em}.dataTables_wrapper .dataTables_info{clear:both;float:left;padding-top:0.755em}.dataTables_wrapper .dataTables_paginate{float:right;text-align:right;padding-top:0.25em}.dataTables_wrapper .dataTables_paginate .paginate_button{box-sizing:border-box;display:inline-block;min-width:1.5em;padding:0.5em 1em;margin-left:2px;text-align:center;text-decoration:none !important;cursor:pointer;*cursor:hand;color:#333 !important;border:1px solid transparent;border-radius:2px}.dataTables_wrapper .dataTables_paginate .paginate_button.current,.dataTables_wrapper .dataTables_paginate .paginate_button.current:hover{color:#333 !important;border:1px solid #979797;background-color:white;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #fff), color-stop(100%, #dcdcdc));background:-webkit-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:-moz-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:-ms-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:-o-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:linear-gradient(to bottom, #fff 0%, #dcdcdc 100%)}.dataTables_wrapper .dataTables_paginate .paginate_button.disabled,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active{cursor:default;color:#666 !important;border:1px solid transparent;background:transparent;box-shadow:none}.dataTables_wrapper .dataTables_paginate .paginate_button:hover{color:white !important;border:1px solid #111;background-color:#585858;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #585858), color-stop(100%, #111));background:-webkit-linear-gradient(top, #585858 0%, #111 100%);background:-moz-linear-gradient(top, #585858 0%, #111 100%);background:-ms-linear-gradient(top, #585858 0%, #111 100%);background:-o-linear-gradient(top, #585858 0%, #111 100%);background:linear-gradient(to bottom, #585858 0%, #111 100%)}.dataTables_wrapper .dataTables_paginate .paginate_button:active{outline:none;background-color:#2b2b2b;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #2b2b2b), color-stop(100%, #0c0c0c));background:-webkit-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-moz-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-ms-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-o-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:linear-gradient(to bottom, #2b2b2b 0%, #0c0c0c 100%);box-shadow:inset 0 0 3px #111}.dataTables_wrapper .dataTables_paginate .ellipsis{padding:0 1em}.dataTables_wrapper .dataTables_processing{position:absolute;top:50%;left:50%;width:100%;height:40px;margin-left:-50%;margin-top:-25px;padding-top:20px;text-align:center;font-size:1.2em;background-color:white;background:-webkit-gradient(linear, left top, right top, color-stop(0%, rgba(255,255,255,0)), color-stop(25%, rgba(255,255,255,0.9)), color-stop(75%, rgba(255,255,255,0.9)), color-stop(100%, rgba(255,255,255,0)));background:-webkit-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:-moz-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:-ms-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:-o-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:linear-gradient(to right, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%)}.dataTables_wrapper .dataTables_length,.dataTables_wrapper .dataTables_filter,.dataTables_wrapper .dataTables_info,.dataTables_wrapper .dataTables_processing,.dataTables_wrapper .dataTables_paginate{color:#333}.dataTables_wrapper .dataTables_scroll{clear:both}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody{*margin-top:-1px;-webkit-overflow-scrolling:touch}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>th,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>td,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>th,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>td{vertical-align:middle}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>th>div.dataTables_sizing,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>td>div.dataTables_sizing,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>th>div.dataTables_sizing,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>td>div.dataTables_sizing{height:0;overflow:hidden;margin:0 !important;padding:0 !important}.dataTables_wrapper.no-footer .dataTables_scrollBody{border-bottom:1px solid #111}.dataTables_wrapper.no-footer div.dataTables_scrollHead table.dataTable,.dataTables_wrapper.no-footer div.dataTables_scrollBody>table{border-bottom:none}.dataTables_wrapper:after{visibility:hidden;display:block;content:"";clear:both;height:0}@media screen and (max-width: 767px){.dataTables_wrapper .dataTables_info,.dataTables_wrapper .dataTables_paginate{float:none;text-align:center}.dataTables_wrapper .dataTables_paginate{margin-top:0.5em}}@media screen and (max-width: 640px){.dataTables_wrapper .dataTables_length,.dataTables_wrapper .dataTables_filter{float:none;text-align:center}.dataTables_wrapper .dataTables_filter{margin-top:0.5em}}table.dataTable thead th div.DataTables_sort_wrapper{position:relative}table.dataTable thead th div.DataTables_sort_wrapper span{position:absolute;top:50%;margin-top:-8px;right:-18px}table.dataTable thead th.ui-state-default,table.dataTable tfoot th.ui-state-default{border-left-width:0}table.dataTable thead th.ui-state-default:first-child,table.dataTable tfoot th.ui-state-default:first-child{border-left-width:1px}.dataTables_wrapper .dataTables_paginate .fg-button{box-sizing:border-box;display:inline-block;min-width:1.5em;padding:0.5em;margin-left:2px;text-align:center;text-decoration:none !important;cursor:pointer;*cursor:hand;border:1px solid transparent}.dataTables_wrapper .dataTables_paginate .fg-button:active{outline:none}.dataTables_wrapper .dataTables_paginate .fg-button:first-child{border-top-left-radius:3px;border-bottom-left-radius:3px}.dataTables_wrapper .dataTables_paginate .fg-button:last-child{border-top-right-radius:3px;border-bottom-right-radius:3px}.dataTables_wrapper .ui-widget-header{font-weight:normal}.dataTables_wrapper .ui-toolbar{padding:8px}.dataTables_wrapper.no-footer .dataTables_scrollBody{border-bottom:none}.dataTables_wrapper .dataTables_length,.dataTables_wrapper .dataTables_filter,.dataTables_wrapper .dataTables_info,.dataTables_wrapper .dataTables_processing,.dataTables_wrapper .dataTables_paginate{color:inherit} diff --git a/konsultasi/libs/DataTable/DataTables-1.10.18/css/dataTables.semanticui.css b/konsultasi/libs/DataTable/DataTables-1.10.18/css/dataTables.semanticui.css new file mode 100644 index 0000000..077db2a --- /dev/null +++ b/konsultasi/libs/DataTable/DataTables-1.10.18/css/dataTables.semanticui.css @@ -0,0 +1,102 @@ +/* + * Styling for DataTables with Semantic UI + */ +table.dataTable.table { + margin: 0; +} +table.dataTable.table thead th, +table.dataTable.table thead td { + position: relative; +} +table.dataTable.table thead th.sorting, table.dataTable.table thead th.sorting_asc, table.dataTable.table thead th.sorting_desc, +table.dataTable.table thead td.sorting, +table.dataTable.table thead td.sorting_asc, +table.dataTable.table thead td.sorting_desc { + padding-right: 20px; +} +table.dataTable.table thead th.sorting:after, table.dataTable.table thead th.sorting_asc:after, table.dataTable.table thead th.sorting_desc:after, +table.dataTable.table thead td.sorting:after, +table.dataTable.table thead td.sorting_asc:after, +table.dataTable.table thead td.sorting_desc:after { + position: absolute; + top: 12px; + right: 8px; + display: block; + font-family: Icons; +} +table.dataTable.table thead th.sorting:after, +table.dataTable.table thead td.sorting:after { + content: "\f0dc"; + color: #ddd; + font-size: 0.8em; +} +table.dataTable.table thead th.sorting_asc:after, +table.dataTable.table thead td.sorting_asc:after { + content: "\f0de"; +} +table.dataTable.table thead th.sorting_desc:after, +table.dataTable.table thead td.sorting_desc:after { + content: "\f0dd"; +} +table.dataTable.table td, +table.dataTable.table th { + -webkit-box-sizing: content-box; + box-sizing: content-box; +} +table.dataTable.table td.dataTables_empty, +table.dataTable.table th.dataTables_empty { + text-align: center; +} +table.dataTable.table.nowrap th, +table.dataTable.table.nowrap td { + white-space: nowrap; +} + +div.dataTables_wrapper div.dataTables_length select { + vertical-align: middle; + min-height: 2.7142em; +} +div.dataTables_wrapper div.dataTables_length .ui.selection.dropdown { + min-width: 0; +} +div.dataTables_wrapper div.dataTables_filter span.input { + margin-left: 0.5em; +} +div.dataTables_wrapper div.dataTables_info { + padding-top: 13px; + white-space: nowrap; +} +div.dataTables_wrapper div.dataTables_processing { + position: absolute; + top: 50%; + left: 50%; + width: 200px; + margin-left: -100px; + text-align: center; +} +div.dataTables_wrapper div.row.dt-table { + padding: 0; +} +div.dataTables_wrapper div.dataTables_scrollHead table.dataTable { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + border-bottom: none; +} +div.dataTables_wrapper div.dataTables_scrollBody thead .sorting:after, +div.dataTables_wrapper div.dataTables_scrollBody thead .sorting_asc:after, +div.dataTables_wrapper div.dataTables_scrollBody thead .sorting_desc:after { + display: none; +} +div.dataTables_wrapper div.dataTables_scrollBody table.dataTable { + border-radius: 0; + border-top: none; + border-bottom-width: 0; +} +div.dataTables_wrapper div.dataTables_scrollBody table.dataTable.no-footer { + border-bottom-width: 1px; +} +div.dataTables_wrapper div.dataTables_scrollFoot table.dataTable { + border-top-right-radius: 0; + border-top-left-radius: 0; + border-top: none; +} diff --git a/konsultasi/libs/DataTable/DataTables-1.10.18/css/dataTables.semanticui.min.css b/konsultasi/libs/DataTable/DataTables-1.10.18/css/dataTables.semanticui.min.css new file mode 100644 index 0000000..fcffe0c --- /dev/null +++ b/konsultasi/libs/DataTable/DataTables-1.10.18/css/dataTables.semanticui.min.css @@ -0,0 +1 @@ +table.dataTable.table{margin:0}table.dataTable.table thead th,table.dataTable.table thead td{position:relative}table.dataTable.table thead th.sorting,table.dataTable.table thead th.sorting_asc,table.dataTable.table thead th.sorting_desc,table.dataTable.table thead td.sorting,table.dataTable.table thead td.sorting_asc,table.dataTable.table thead td.sorting_desc{padding-right:20px}table.dataTable.table thead th.sorting:after,table.dataTable.table thead th.sorting_asc:after,table.dataTable.table thead th.sorting_desc:after,table.dataTable.table thead td.sorting:after,table.dataTable.table thead td.sorting_asc:after,table.dataTable.table thead td.sorting_desc:after{position:absolute;top:12px;right:8px;display:block;font-family:Icons}table.dataTable.table thead th.sorting:after,table.dataTable.table thead td.sorting:after{content:"\f0dc";color:#ddd;font-size:0.8em}table.dataTable.table thead th.sorting_asc:after,table.dataTable.table thead td.sorting_asc:after{content:"\f0de"}table.dataTable.table thead th.sorting_desc:after,table.dataTable.table thead td.sorting_desc:after{content:"\f0dd"}table.dataTable.table td,table.dataTable.table th{-webkit-box-sizing:content-box;box-sizing:content-box}table.dataTable.table td.dataTables_empty,table.dataTable.table th.dataTables_empty{text-align:center}table.dataTable.table.nowrap th,table.dataTable.table.nowrap td{white-space:nowrap}div.dataTables_wrapper div.dataTables_length select{vertical-align:middle;min-height:2.7142em}div.dataTables_wrapper div.dataTables_length .ui.selection.dropdown{min-width:0}div.dataTables_wrapper div.dataTables_filter span.input{margin-left:0.5em}div.dataTables_wrapper div.dataTables_info{padding-top:13px;white-space:nowrap}div.dataTables_wrapper div.dataTables_processing{position:absolute;top:50%;left:50%;width:200px;margin-left:-100px;text-align:center}div.dataTables_wrapper div.row.dt-table{padding:0}div.dataTables_wrapper div.dataTables_scrollHead table.dataTable{border-bottom-right-radius:0;border-bottom-left-radius:0;border-bottom:none}div.dataTables_wrapper div.dataTables_scrollBody thead .sorting:after,div.dataTables_wrapper div.dataTables_scrollBody thead .sorting_asc:after,div.dataTables_wrapper div.dataTables_scrollBody thead .sorting_desc:after{display:none}div.dataTables_wrapper div.dataTables_scrollBody table.dataTable{border-radius:0;border-top:none;border-bottom-width:0}div.dataTables_wrapper div.dataTables_scrollBody table.dataTable.no-footer{border-bottom-width:1px}div.dataTables_wrapper div.dataTables_scrollFoot table.dataTable{border-top-right-radius:0;border-top-left-radius:0;border-top:none} diff --git a/konsultasi/libs/DataTable/DataTables-1.10.18/css/jquery.dataTables.css b/konsultasi/libs/DataTable/DataTables-1.10.18/css/jquery.dataTables.css new file mode 100644 index 0000000..760eccb --- /dev/null +++ b/konsultasi/libs/DataTable/DataTables-1.10.18/css/jquery.dataTables.css @@ -0,0 +1,448 @@ +/* + * Table styles + */ +table.dataTable { + width: 100%; + margin: 0 auto; + clear: both; + border-collapse: separate; + border-spacing: 0; + /* + * Header and footer styles + */ + /* + * Body styles + */ +} +table.dataTable thead th, +table.dataTable tfoot th { + font-weight: bold; +} +table.dataTable thead th, +table.dataTable thead td { + padding: 10px 18px; + border-bottom: 1px solid #111; +} +table.dataTable thead th:active, +table.dataTable thead td:active { + outline: none; +} +table.dataTable tfoot th, +table.dataTable tfoot td { + padding: 10px 18px 6px 18px; + border-top: 1px solid #111; +} +table.dataTable thead .sorting, +table.dataTable thead .sorting_asc, +table.dataTable thead .sorting_desc, +table.dataTable thead .sorting_asc_disabled, +table.dataTable thead .sorting_desc_disabled { + cursor: pointer; + *cursor: hand; + background-repeat: no-repeat; + background-position: center right; +} +table.dataTable thead .sorting { + background-image: url("../images/sort_both.png"); +} +table.dataTable thead .sorting_asc { + background-image: url("../images/sort_asc.png"); +} +table.dataTable thead .sorting_desc { + background-image: url("../images/sort_desc.png"); +} +table.dataTable thead .sorting_asc_disabled { + background-image: url("../images/sort_asc_disabled.png"); +} +table.dataTable thead .sorting_desc_disabled { + background-image: url("../images/sort_desc_disabled.png"); +} +table.dataTable tbody tr { + background-color: #ffffff; +} +table.dataTable tbody tr.selected { + background-color: #B0BED9; +} +table.dataTable tbody th, +table.dataTable tbody td { + padding: 8px 10px; +} +table.dataTable.row-border tbody th, table.dataTable.row-border tbody td, table.dataTable.display tbody th, table.dataTable.display tbody td { + border-top: 1px solid #ddd; +} +table.dataTable.row-border tbody tr:first-child th, +table.dataTable.row-border tbody tr:first-child td, table.dataTable.display tbody tr:first-child th, +table.dataTable.display tbody tr:first-child td { + border-top: none; +} +table.dataTable.cell-border tbody th, table.dataTable.cell-border tbody td { + border-top: 1px solid #ddd; + border-right: 1px solid #ddd; +} +table.dataTable.cell-border tbody tr th:first-child, +table.dataTable.cell-border tbody tr td:first-child { + border-left: 1px solid #ddd; +} +table.dataTable.cell-border tbody tr:first-child th, +table.dataTable.cell-border tbody tr:first-child td { + border-top: none; +} +table.dataTable.stripe tbody tr.odd, table.dataTable.display tbody tr.odd { + background-color: #f9f9f9; +} +table.dataTable.stripe tbody tr.odd.selected, table.dataTable.display tbody tr.odd.selected { + background-color: #acbad4; +} +table.dataTable.hover tbody tr:hover, table.dataTable.display tbody tr:hover { + background-color: #f6f6f6; +} +table.dataTable.hover tbody tr:hover.selected, table.dataTable.display tbody tr:hover.selected { + background-color: #aab7d1; +} +table.dataTable.order-column tbody tr > .sorting_1, +table.dataTable.order-column tbody tr > .sorting_2, +table.dataTable.order-column tbody tr > .sorting_3, table.dataTable.display tbody tr > .sorting_1, +table.dataTable.display tbody tr > .sorting_2, +table.dataTable.display tbody tr > .sorting_3 { + background-color: #fafafa; +} +table.dataTable.order-column tbody tr.selected > .sorting_1, +table.dataTable.order-column tbody tr.selected > .sorting_2, +table.dataTable.order-column tbody tr.selected > .sorting_3, table.dataTable.display tbody tr.selected > .sorting_1, +table.dataTable.display tbody tr.selected > .sorting_2, +table.dataTable.display tbody tr.selected > .sorting_3 { + background-color: #acbad5; +} +table.dataTable.display tbody tr.odd > .sorting_1, table.dataTable.order-column.stripe tbody tr.odd > .sorting_1 { + background-color: #f1f1f1; +} +table.dataTable.display tbody tr.odd > .sorting_2, table.dataTable.order-column.stripe tbody tr.odd > .sorting_2 { + background-color: #f3f3f3; +} +table.dataTable.display tbody tr.odd > .sorting_3, table.dataTable.order-column.stripe tbody tr.odd > .sorting_3 { + background-color: whitesmoke; +} +table.dataTable.display tbody tr.odd.selected > .sorting_1, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_1 { + background-color: #a6b4cd; +} +table.dataTable.display tbody tr.odd.selected > .sorting_2, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_2 { + background-color: #a8b5cf; +} +table.dataTable.display tbody tr.odd.selected > .sorting_3, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_3 { + background-color: #a9b7d1; +} +table.dataTable.display tbody tr.even > .sorting_1, table.dataTable.order-column.stripe tbody tr.even > .sorting_1 { + background-color: #fafafa; +} +table.dataTable.display tbody tr.even > .sorting_2, table.dataTable.order-column.stripe tbody tr.even > .sorting_2 { + background-color: #fcfcfc; +} +table.dataTable.display tbody tr.even > .sorting_3, table.dataTable.order-column.stripe tbody tr.even > .sorting_3 { + background-color: #fefefe; +} +table.dataTable.display tbody tr.even.selected > .sorting_1, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_1 { + background-color: #acbad5; +} +table.dataTable.display tbody tr.even.selected > .sorting_2, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_2 { + background-color: #aebcd6; +} +table.dataTable.display tbody tr.even.selected > .sorting_3, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_3 { + background-color: #afbdd8; +} +table.dataTable.display tbody tr:hover > .sorting_1, table.dataTable.order-column.hover tbody tr:hover > .sorting_1 { + background-color: #eaeaea; +} +table.dataTable.display tbody tr:hover > .sorting_2, table.dataTable.order-column.hover tbody tr:hover > .sorting_2 { + background-color: #ececec; +} +table.dataTable.display tbody tr:hover > .sorting_3, table.dataTable.order-column.hover tbody tr:hover > .sorting_3 { + background-color: #efefef; +} +table.dataTable.display tbody tr:hover.selected > .sorting_1, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_1 { + background-color: #a2aec7; +} +table.dataTable.display tbody tr:hover.selected > .sorting_2, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_2 { + background-color: #a3b0c9; +} +table.dataTable.display tbody tr:hover.selected > .sorting_3, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_3 { + background-color: #a5b2cb; +} +table.dataTable.no-footer { + border-bottom: 1px solid #111; +} +table.dataTable.nowrap th, table.dataTable.nowrap td { + white-space: nowrap; +} +table.dataTable.compact thead th, +table.dataTable.compact thead td { + padding: 4px 17px 4px 4px; +} +table.dataTable.compact tfoot th, +table.dataTable.compact tfoot td { + padding: 4px; +} +table.dataTable.compact tbody th, +table.dataTable.compact tbody td { + padding: 4px; +} +table.dataTable th.dt-left, +table.dataTable td.dt-left { + text-align: left; +} +table.dataTable th.dt-center, +table.dataTable td.dt-center, +table.dataTable td.dataTables_empty { + text-align: center; +} +table.dataTable th.dt-right, +table.dataTable td.dt-right { + text-align: right; +} +table.dataTable th.dt-justify, +table.dataTable td.dt-justify { + text-align: justify; +} +table.dataTable th.dt-nowrap, +table.dataTable td.dt-nowrap { + white-space: nowrap; +} +table.dataTable thead th.dt-head-left, +table.dataTable thead td.dt-head-left, +table.dataTable tfoot th.dt-head-left, +table.dataTable tfoot td.dt-head-left { + text-align: left; +} +table.dataTable thead th.dt-head-center, +table.dataTable thead td.dt-head-center, +table.dataTable tfoot th.dt-head-center, +table.dataTable tfoot td.dt-head-center { + text-align: center; +} +table.dataTable thead th.dt-head-right, +table.dataTable thead td.dt-head-right, +table.dataTable tfoot th.dt-head-right, +table.dataTable tfoot td.dt-head-right { + text-align: right; +} +table.dataTable thead th.dt-head-justify, +table.dataTable thead td.dt-head-justify, +table.dataTable tfoot th.dt-head-justify, +table.dataTable tfoot td.dt-head-justify { + text-align: justify; +} +table.dataTable thead th.dt-head-nowrap, +table.dataTable thead td.dt-head-nowrap, +table.dataTable tfoot th.dt-head-nowrap, +table.dataTable tfoot td.dt-head-nowrap { + white-space: nowrap; +} +table.dataTable tbody th.dt-body-left, +table.dataTable tbody td.dt-body-left { + text-align: left; +} +table.dataTable tbody th.dt-body-center, +table.dataTable tbody td.dt-body-center { + text-align: center; +} +table.dataTable tbody th.dt-body-right, +table.dataTable tbody td.dt-body-right { + text-align: right; +} +table.dataTable tbody th.dt-body-justify, +table.dataTable tbody td.dt-body-justify { + text-align: justify; +} +table.dataTable tbody th.dt-body-nowrap, +table.dataTable tbody td.dt-body-nowrap { + white-space: nowrap; +} + +table.dataTable, +table.dataTable th, +table.dataTable td { + box-sizing: content-box; +} + +/* + * Control feature layout + */ +.dataTables_wrapper { + position: relative; + clear: both; + *zoom: 1; + zoom: 1; +} +.dataTables_wrapper .dataTables_length { + float: left; +} +.dataTables_wrapper .dataTables_filter { + float: right; + text-align: right; +} +.dataTables_wrapper .dataTables_filter input { + margin-left: 0.5em; +} +.dataTables_wrapper .dataTables_info { + clear: both; + float: left; + padding-top: 0.755em; +} +.dataTables_wrapper .dataTables_paginate { + float: right; + text-align: right; + padding-top: 0.25em; +} +.dataTables_wrapper .dataTables_paginate .paginate_button { + box-sizing: border-box; + display: inline-block; + min-width: 1.5em; + padding: 0.5em 1em; + margin-left: 2px; + text-align: center; + text-decoration: none !important; + cursor: pointer; + *cursor: hand; + color: #333 !important; + border: 1px solid transparent; + border-radius: 2px; +} +.dataTables_wrapper .dataTables_paginate .paginate_button.current, .dataTables_wrapper .dataTables_paginate .paginate_button.current:hover { + color: #333 !important; + border: 1px solid #979797; + background-color: white; + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, white), color-stop(100%, #dcdcdc)); + /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(top, white 0%, #dcdcdc 100%); + /* Chrome10+,Safari5.1+ */ + background: -moz-linear-gradient(top, white 0%, #dcdcdc 100%); + /* FF3.6+ */ + background: -ms-linear-gradient(top, white 0%, #dcdcdc 100%); + /* IE10+ */ + background: -o-linear-gradient(top, white 0%, #dcdcdc 100%); + /* Opera 11.10+ */ + background: linear-gradient(to bottom, white 0%, #dcdcdc 100%); + /* W3C */ +} +.dataTables_wrapper .dataTables_paginate .paginate_button.disabled, .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover, .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active { + cursor: default; + color: #666 !important; + border: 1px solid transparent; + background: transparent; + box-shadow: none; +} +.dataTables_wrapper .dataTables_paginate .paginate_button:hover { + color: white !important; + border: 1px solid #111; + background-color: #585858; + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #585858), color-stop(100%, #111)); + /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(top, #585858 0%, #111 100%); + /* Chrome10+,Safari5.1+ */ + background: -moz-linear-gradient(top, #585858 0%, #111 100%); + /* FF3.6+ */ + background: -ms-linear-gradient(top, #585858 0%, #111 100%); + /* IE10+ */ + background: -o-linear-gradient(top, #585858 0%, #111 100%); + /* Opera 11.10+ */ + background: linear-gradient(to bottom, #585858 0%, #111 100%); + /* W3C */ +} +.dataTables_wrapper .dataTables_paginate .paginate_button:active { + outline: none; + background-color: #2b2b2b; + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #2b2b2b), color-stop(100%, #0c0c0c)); + /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); + /* Chrome10+,Safari5.1+ */ + background: -moz-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); + /* FF3.6+ */ + background: -ms-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); + /* IE10+ */ + background: -o-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); + /* Opera 11.10+ */ + background: linear-gradient(to bottom, #2b2b2b 0%, #0c0c0c 100%); + /* W3C */ + box-shadow: inset 0 0 3px #111; +} +.dataTables_wrapper .dataTables_paginate .ellipsis { + padding: 0 1em; +} +.dataTables_wrapper .dataTables_processing { + position: absolute; + top: 50%; + left: 50%; + width: 100%; + height: 40px; + margin-left: -50%; + margin-top: -25px; + padding-top: 20px; + text-align: center; + font-size: 1.2em; + background-color: white; + background: -webkit-gradient(linear, left top, right top, color-stop(0%, rgba(255, 255, 255, 0)), color-stop(25%, rgba(255, 255, 255, 0.9)), color-stop(75%, rgba(255, 255, 255, 0.9)), color-stop(100%, rgba(255, 255, 255, 0))); + background: -webkit-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); + background: -moz-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); + background: -ms-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); + background: -o-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); + background: linear-gradient(to right, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); +} +.dataTables_wrapper .dataTables_length, +.dataTables_wrapper .dataTables_filter, +.dataTables_wrapper .dataTables_info, +.dataTables_wrapper .dataTables_processing, +.dataTables_wrapper .dataTables_paginate { + color: #333; +} +.dataTables_wrapper .dataTables_scroll { + clear: both; +} +.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody { + *margin-top: -1px; + -webkit-overflow-scrolling: touch; +} +.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > th, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > td, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > th, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > td { + vertical-align: middle; +} +.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > th > div.dataTables_sizing, +.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > td > div.dataTables_sizing, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > th > div.dataTables_sizing, +.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > td > div.dataTables_sizing { + height: 0; + overflow: hidden; + margin: 0 !important; + padding: 0 !important; +} +.dataTables_wrapper.no-footer .dataTables_scrollBody { + border-bottom: 1px solid #111; +} +.dataTables_wrapper.no-footer div.dataTables_scrollHead table.dataTable, +.dataTables_wrapper.no-footer div.dataTables_scrollBody > table { + border-bottom: none; +} +.dataTables_wrapper:after { + visibility: hidden; + display: block; + content: ""; + clear: both; + height: 0; +} + +@media screen and (max-width: 767px) { + .dataTables_wrapper .dataTables_info, + .dataTables_wrapper .dataTables_paginate { + float: none; + text-align: center; + } + .dataTables_wrapper .dataTables_paginate { + margin-top: 0.5em; + } +} +@media screen and (max-width: 640px) { + .dataTables_wrapper .dataTables_length, + .dataTables_wrapper .dataTables_filter { + float: none; + text-align: center; + } + .dataTables_wrapper .dataTables_filter { + margin-top: 0.5em; + } +} diff --git a/konsultasi/libs/DataTable/DataTables-1.10.18/css/jquery.dataTables.min.css b/konsultasi/libs/DataTable/DataTables-1.10.18/css/jquery.dataTables.min.css new file mode 100644 index 0000000..6565b40 --- /dev/null +++ b/konsultasi/libs/DataTable/DataTables-1.10.18/css/jquery.dataTables.min.css @@ -0,0 +1 @@ +table.dataTable{width:100%;margin:0 auto;clear:both;border-collapse:separate;border-spacing:0}table.dataTable thead th,table.dataTable tfoot th{font-weight:bold}table.dataTable thead th,table.dataTable thead td{padding:10px 18px;border-bottom:1px solid #111}table.dataTable thead th:active,table.dataTable thead td:active{outline:none}table.dataTable tfoot th,table.dataTable tfoot td{padding:10px 18px 6px 18px;border-top:1px solid #111}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_desc,table.dataTable thead .sorting_asc_disabled,table.dataTable thead .sorting_desc_disabled{cursor:pointer;*cursor:hand;background-repeat:no-repeat;background-position:center right}table.dataTable thead .sorting{background-image:url("../images/sort_both.png")}table.dataTable thead .sorting_asc{background-image:url("../images/sort_asc.png")}table.dataTable thead .sorting_desc{background-image:url("../images/sort_desc.png")}table.dataTable thead .sorting_asc_disabled{background-image:url("../images/sort_asc_disabled.png")}table.dataTable thead .sorting_desc_disabled{background-image:url("../images/sort_desc_disabled.png")}table.dataTable tbody tr{background-color:#ffffff}table.dataTable tbody tr.selected{background-color:#B0BED9}table.dataTable tbody th,table.dataTable tbody td{padding:8px 10px}table.dataTable.row-border tbody th,table.dataTable.row-border tbody td,table.dataTable.display tbody th,table.dataTable.display tbody td{border-top:1px solid #ddd}table.dataTable.row-border tbody tr:first-child th,table.dataTable.row-border tbody tr:first-child td,table.dataTable.display tbody tr:first-child th,table.dataTable.display tbody tr:first-child td{border-top:none}table.dataTable.cell-border tbody th,table.dataTable.cell-border tbody td{border-top:1px solid #ddd;border-right:1px solid #ddd}table.dataTable.cell-border tbody tr th:first-child,table.dataTable.cell-border tbody tr td:first-child{border-left:1px solid #ddd}table.dataTable.cell-border tbody tr:first-child th,table.dataTable.cell-border tbody tr:first-child td{border-top:none}table.dataTable.stripe tbody tr.odd,table.dataTable.display tbody tr.odd{background-color:#f9f9f9}table.dataTable.stripe tbody tr.odd.selected,table.dataTable.display tbody tr.odd.selected{background-color:#acbad4}table.dataTable.hover tbody tr:hover,table.dataTable.display tbody tr:hover{background-color:#f6f6f6}table.dataTable.hover tbody tr:hover.selected,table.dataTable.display tbody tr:hover.selected{background-color:#aab7d1}table.dataTable.order-column tbody tr>.sorting_1,table.dataTable.order-column tbody tr>.sorting_2,table.dataTable.order-column tbody tr>.sorting_3,table.dataTable.display tbody tr>.sorting_1,table.dataTable.display tbody tr>.sorting_2,table.dataTable.display tbody tr>.sorting_3{background-color:#fafafa}table.dataTable.order-column tbody tr.selected>.sorting_1,table.dataTable.order-column tbody tr.selected>.sorting_2,table.dataTable.order-column tbody tr.selected>.sorting_3,table.dataTable.display tbody tr.selected>.sorting_1,table.dataTable.display tbody tr.selected>.sorting_2,table.dataTable.display tbody tr.selected>.sorting_3{background-color:#acbad5}table.dataTable.display tbody tr.odd>.sorting_1,table.dataTable.order-column.stripe tbody tr.odd>.sorting_1{background-color:#f1f1f1}table.dataTable.display tbody tr.odd>.sorting_2,table.dataTable.order-column.stripe tbody tr.odd>.sorting_2{background-color:#f3f3f3}table.dataTable.display tbody tr.odd>.sorting_3,table.dataTable.order-column.stripe tbody tr.odd>.sorting_3{background-color:whitesmoke}table.dataTable.display tbody tr.odd.selected>.sorting_1,table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_1{background-color:#a6b4cd}table.dataTable.display tbody tr.odd.selected>.sorting_2,table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_2{background-color:#a8b5cf}table.dataTable.display tbody tr.odd.selected>.sorting_3,table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_3{background-color:#a9b7d1}table.dataTable.display tbody tr.even>.sorting_1,table.dataTable.order-column.stripe tbody tr.even>.sorting_1{background-color:#fafafa}table.dataTable.display tbody tr.even>.sorting_2,table.dataTable.order-column.stripe tbody tr.even>.sorting_2{background-color:#fcfcfc}table.dataTable.display tbody tr.even>.sorting_3,table.dataTable.order-column.stripe tbody tr.even>.sorting_3{background-color:#fefefe}table.dataTable.display tbody tr.even.selected>.sorting_1,table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_1{background-color:#acbad5}table.dataTable.display tbody tr.even.selected>.sorting_2,table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_2{background-color:#aebcd6}table.dataTable.display tbody tr.even.selected>.sorting_3,table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_3{background-color:#afbdd8}table.dataTable.display tbody tr:hover>.sorting_1,table.dataTable.order-column.hover tbody tr:hover>.sorting_1{background-color:#eaeaea}table.dataTable.display tbody tr:hover>.sorting_2,table.dataTable.order-column.hover tbody tr:hover>.sorting_2{background-color:#ececec}table.dataTable.display tbody tr:hover>.sorting_3,table.dataTable.order-column.hover tbody tr:hover>.sorting_3{background-color:#efefef}table.dataTable.display tbody tr:hover.selected>.sorting_1,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_1{background-color:#a2aec7}table.dataTable.display tbody tr:hover.selected>.sorting_2,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_2{background-color:#a3b0c9}table.dataTable.display tbody tr:hover.selected>.sorting_3,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_3{background-color:#a5b2cb}table.dataTable.no-footer{border-bottom:1px solid #111}table.dataTable.nowrap th,table.dataTable.nowrap td{white-space:nowrap}table.dataTable.compact thead th,table.dataTable.compact thead td{padding:4px 17px 4px 4px}table.dataTable.compact tfoot th,table.dataTable.compact tfoot td{padding:4px}table.dataTable.compact tbody th,table.dataTable.compact tbody td{padding:4px}table.dataTable th.dt-left,table.dataTable td.dt-left{text-align:left}table.dataTable th.dt-center,table.dataTable td.dt-center,table.dataTable td.dataTables_empty{text-align:center}table.dataTable th.dt-right,table.dataTable td.dt-right{text-align:right}table.dataTable th.dt-justify,table.dataTable td.dt-justify{text-align:justify}table.dataTable th.dt-nowrap,table.dataTable td.dt-nowrap{white-space:nowrap}table.dataTable thead th.dt-head-left,table.dataTable thead td.dt-head-left,table.dataTable tfoot th.dt-head-left,table.dataTable tfoot td.dt-head-left{text-align:left}table.dataTable thead th.dt-head-center,table.dataTable thead td.dt-head-center,table.dataTable tfoot th.dt-head-center,table.dataTable tfoot td.dt-head-center{text-align:center}table.dataTable thead th.dt-head-right,table.dataTable thead td.dt-head-right,table.dataTable tfoot th.dt-head-right,table.dataTable tfoot td.dt-head-right{text-align:right}table.dataTable thead th.dt-head-justify,table.dataTable thead td.dt-head-justify,table.dataTable tfoot th.dt-head-justify,table.dataTable tfoot td.dt-head-justify{text-align:justify}table.dataTable thead th.dt-head-nowrap,table.dataTable thead td.dt-head-nowrap,table.dataTable tfoot th.dt-head-nowrap,table.dataTable tfoot td.dt-head-nowrap{white-space:nowrap}table.dataTable tbody th.dt-body-left,table.dataTable tbody td.dt-body-left{text-align:left}table.dataTable tbody th.dt-body-center,table.dataTable tbody td.dt-body-center{text-align:center}table.dataTable tbody th.dt-body-right,table.dataTable tbody td.dt-body-right{text-align:right}table.dataTable tbody th.dt-body-justify,table.dataTable tbody td.dt-body-justify{text-align:justify}table.dataTable tbody th.dt-body-nowrap,table.dataTable tbody td.dt-body-nowrap{white-space:nowrap}table.dataTable,table.dataTable th,table.dataTable td{box-sizing:content-box}.dataTables_wrapper{position:relative;clear:both;*zoom:1;zoom:1}.dataTables_wrapper .dataTables_length{float:left}.dataTables_wrapper .dataTables_filter{float:right;text-align:right}.dataTables_wrapper .dataTables_filter input{margin-left:0.5em}.dataTables_wrapper .dataTables_info{clear:both;float:left;padding-top:0.755em}.dataTables_wrapper .dataTables_paginate{float:right;text-align:right;padding-top:0.25em}.dataTables_wrapper .dataTables_paginate .paginate_button{box-sizing:border-box;display:inline-block;min-width:1.5em;padding:0.5em 1em;margin-left:2px;text-align:center;text-decoration:none !important;cursor:pointer;*cursor:hand;color:#333 !important;border:1px solid transparent;border-radius:2px}.dataTables_wrapper .dataTables_paginate .paginate_button.current,.dataTables_wrapper .dataTables_paginate .paginate_button.current:hover{color:#333 !important;border:1px solid #979797;background-color:white;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #fff), color-stop(100%, #dcdcdc));background:-webkit-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:-moz-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:-ms-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:-o-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:linear-gradient(to bottom, #fff 0%, #dcdcdc 100%)}.dataTables_wrapper .dataTables_paginate .paginate_button.disabled,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active{cursor:default;color:#666 !important;border:1px solid transparent;background:transparent;box-shadow:none}.dataTables_wrapper .dataTables_paginate .paginate_button:hover{color:white !important;border:1px solid #111;background-color:#585858;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #585858), color-stop(100%, #111));background:-webkit-linear-gradient(top, #585858 0%, #111 100%);background:-moz-linear-gradient(top, #585858 0%, #111 100%);background:-ms-linear-gradient(top, #585858 0%, #111 100%);background:-o-linear-gradient(top, #585858 0%, #111 100%);background:linear-gradient(to bottom, #585858 0%, #111 100%)}.dataTables_wrapper .dataTables_paginate .paginate_button:active{outline:none;background-color:#2b2b2b;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #2b2b2b), color-stop(100%, #0c0c0c));background:-webkit-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-moz-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-ms-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-o-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:linear-gradient(to bottom, #2b2b2b 0%, #0c0c0c 100%);box-shadow:inset 0 0 3px #111}.dataTables_wrapper .dataTables_paginate .ellipsis{padding:0 1em}.dataTables_wrapper .dataTables_processing{position:absolute;top:50%;left:50%;width:100%;height:40px;margin-left:-50%;margin-top:-25px;padding-top:20px;text-align:center;font-size:1.2em;background-color:white;background:-webkit-gradient(linear, left top, right top, color-stop(0%, rgba(255,255,255,0)), color-stop(25%, rgba(255,255,255,0.9)), color-stop(75%, rgba(255,255,255,0.9)), color-stop(100%, rgba(255,255,255,0)));background:-webkit-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:-moz-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:-ms-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:-o-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:linear-gradient(to right, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%)}.dataTables_wrapper .dataTables_length,.dataTables_wrapper .dataTables_filter,.dataTables_wrapper .dataTables_info,.dataTables_wrapper .dataTables_processing,.dataTables_wrapper .dataTables_paginate{color:#333}.dataTables_wrapper .dataTables_scroll{clear:both}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody{*margin-top:-1px;-webkit-overflow-scrolling:touch}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>th,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>td,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>th,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>td{vertical-align:middle}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>th>div.dataTables_sizing,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>td>div.dataTables_sizing,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>th>div.dataTables_sizing,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>td>div.dataTables_sizing{height:0;overflow:hidden;margin:0 !important;padding:0 !important}.dataTables_wrapper.no-footer .dataTables_scrollBody{border-bottom:1px solid #111}.dataTables_wrapper.no-footer div.dataTables_scrollHead table.dataTable,.dataTables_wrapper.no-footer div.dataTables_scrollBody>table{border-bottom:none}.dataTables_wrapper:after{visibility:hidden;display:block;content:"";clear:both;height:0}@media screen and (max-width: 767px){.dataTables_wrapper .dataTables_info,.dataTables_wrapper .dataTables_paginate{float:none;text-align:center}.dataTables_wrapper .dataTables_paginate{margin-top:0.5em}}@media screen and (max-width: 640px){.dataTables_wrapper .dataTables_length,.dataTables_wrapper .dataTables_filter{float:none;text-align:center}.dataTables_wrapper .dataTables_filter{margin-top:0.5em}} diff --git a/konsultasi/libs/DataTable/DataTables-1.10.18/images/sort_asc.png b/konsultasi/libs/DataTable/DataTables-1.10.18/images/sort_asc.png new file mode 100644 index 0000000..e1ba61a Binary files /dev/null and b/konsultasi/libs/DataTable/DataTables-1.10.18/images/sort_asc.png differ diff --git a/konsultasi/libs/DataTable/DataTables-1.10.18/images/sort_asc_disabled.png b/konsultasi/libs/DataTable/DataTables-1.10.18/images/sort_asc_disabled.png new file mode 100644 index 0000000..fb11dfe Binary files /dev/null and b/konsultasi/libs/DataTable/DataTables-1.10.18/images/sort_asc_disabled.png differ diff --git a/konsultasi/libs/DataTable/DataTables-1.10.18/images/sort_both.png b/konsultasi/libs/DataTable/DataTables-1.10.18/images/sort_both.png new file mode 100644 index 0000000..af5bc7c Binary files /dev/null and b/konsultasi/libs/DataTable/DataTables-1.10.18/images/sort_both.png differ diff --git a/konsultasi/libs/DataTable/DataTables-1.10.18/images/sort_desc.png b/konsultasi/libs/DataTable/DataTables-1.10.18/images/sort_desc.png new file mode 100644 index 0000000..0e156de Binary files /dev/null and b/konsultasi/libs/DataTable/DataTables-1.10.18/images/sort_desc.png differ diff --git a/konsultasi/libs/DataTable/DataTables-1.10.18/images/sort_desc_disabled.png b/konsultasi/libs/DataTable/DataTables-1.10.18/images/sort_desc_disabled.png new file mode 100644 index 0000000..c9fdd8a Binary files /dev/null and b/konsultasi/libs/DataTable/DataTables-1.10.18/images/sort_desc_disabled.png differ diff --git a/konsultasi/libs/DataTable/DataTables-1.10.18/js/dataTables.bootstrap.js b/konsultasi/libs/DataTable/DataTables-1.10.18/js/dataTables.bootstrap.js new file mode 100644 index 0000000..f69acdc --- /dev/null +++ b/konsultasi/libs/DataTable/DataTables-1.10.18/js/dataTables.bootstrap.js @@ -0,0 +1,182 @@ +/*! DataTables Bootstrap 3 integration + * ©2011-2015 SpryMedia Ltd - datatables.net/license + */ + +/** + * DataTables integration for Bootstrap 3. This requires Bootstrap 3 and + * DataTables 1.10 or newer. + * + * This file sets the defaults and adds options to DataTables to style its + * controls using Bootstrap. See http://datatables.net/manual/styling/bootstrap + * for further information. + */ +(function( factory ){ + if ( typeof define === 'function' && define.amd ) { + // AMD + define( ['jquery', 'datatables.net'], function ( $ ) { + return factory( $, window, document ); + } ); + } + else if ( typeof exports === 'object' ) { + // CommonJS + module.exports = function (root, $) { + if ( ! root ) { + root = window; + } + + if ( ! $ || ! $.fn.dataTable ) { + // Require DataTables, which attaches to jQuery, including + // jQuery if needed and have a $ property so we can access the + // jQuery object that is used + $ = require('datatables.net')(root, $).$; + } + + return factory( $, root, root.document ); + }; + } + else { + // Browser + factory( jQuery, window, document ); + } +}(function( $, window, document, undefined ) { +'use strict'; +var DataTable = $.fn.dataTable; + + +/* Set the defaults for DataTables initialisation */ +$.extend( true, DataTable.defaults, { + dom: + "<'row'<'col-sm-6'l><'col-sm-6'f>>" + + "<'row'<'col-sm-12'tr>>" + + "<'row'<'col-sm-5'i><'col-sm-7'p>>", + renderer: 'bootstrap' +} ); + + +/* Default class modification */ +$.extend( DataTable.ext.classes, { + sWrapper: "dataTables_wrapper form-inline dt-bootstrap", + sFilterInput: "form-control input-sm", + sLengthSelect: "form-control input-sm", + sProcessing: "dataTables_processing panel panel-default" +} ); + + +/* Bootstrap paging button renderer */ +DataTable.ext.renderer.pageButton.bootstrap = function ( settings, host, idx, buttons, page, pages ) { + var api = new DataTable.Api( settings ); + var classes = settings.oClasses; + var lang = settings.oLanguage.oPaginate; + var aria = settings.oLanguage.oAria.paginate || {}; + var btnDisplay, btnClass, counter=0; + + var attach = function( container, buttons ) { + var i, ien, node, button; + var clickHandler = function ( e ) { + e.preventDefault(); + if ( !$(e.currentTarget).hasClass('disabled') && api.page() != e.data.action ) { + api.page( e.data.action ).draw( 'page' ); + } + }; + + for ( i=0, ien=buttons.length ; i 0 ? + '' : ' disabled'); + break; + + case 'previous': + btnDisplay = lang.sPrevious; + btnClass = button + (page > 0 ? + '' : ' disabled'); + break; + + case 'next': + btnDisplay = lang.sNext; + btnClass = button + (page < pages-1 ? + '' : ' disabled'); + break; + + case 'last': + btnDisplay = lang.sLast; + btnClass = button + (page < pages-1 ? + '' : ' disabled'); + break; + + default: + btnDisplay = button + 1; + btnClass = page === button ? + 'active' : ''; + break; + } + + if ( btnDisplay ) { + node = $('
  • ', { + 'class': classes.sPageButton+' '+btnClass, + 'id': idx === 0 && typeof button === 'string' ? + settings.sTableId +'_'+ button : + null + } ) + .append( $('', { + 'href': '#', + 'aria-controls': settings.sTableId, + 'aria-label': aria[ button ], + 'data-dt-idx': counter, + 'tabindex': settings.iTabIndex + } ) + .html( btnDisplay ) + ) + .appendTo( container ); + + settings.oApi._fnBindAction( + node, {action: button}, clickHandler + ); + + counter++; + } + } + } + }; + + // IE9 throws an 'unknown error' if document.activeElement is used + // inside an iframe or frame. + var activeEl; + + try { + // Because this approach is destroying and recreating the paging + // elements, focus is lost on the select button which is bad for + // accessibility. So we want to restore focus once the draw has + // completed + activeEl = $(host).find(document.activeElement).data('dt-idx'); + } + catch (e) {} + + attach( + $(host).empty().html('