first commit

This commit is contained in:
kicap1992
2024-05-07 19:49:43 +00:00
commit b2a992e15a
3124 changed files with 635045 additions and 0 deletions

105
routes/admin_route.js Executable file
View File

@ -0,0 +1,105 @@
const express = require('express');
const router = express.Router();
const dotenv = require('dotenv');
const conn = require('../conn');
const connection = conn.connection;
const md5 = require('md5');
connection.connect((err) => {
if (err) {
console.error('Error connecting to MySQL database: ' + err.stack);
return;
}
console.log('Connected to MySQL database as id ' + connection.threadId);
})
dotenv.config();
router.get('/', async (req, res) => {
res.sendFile(__dirname + '/ui/admin/index.html');
})
// begin kelas
router.get('/kelas', async (req, res) => {
res.sendFile(__dirname + '/ui/admin/kelas.html');
})
router.get('/kelas/get', async (req, res) => {
const query = 'SELECT * FROM tb_kelas';
connection.query(query, (error, results) => {
if (error) {
console.log('error get kelas', error);
return res.status(500).json({ message: 'Internal server error', status: false });
}
return res.status(200).json({ success: true, data: results, status: true });
})
})
router.post('/kelas', async (req, res) => {
const { kelas } = req.body;
const query = 'INSERT INTO tb_kelas (nama_kelas) VALUES (?)';
connection.query(query, [ kelas], (error, results) => {
if (error) {
console.log('error insert kelas', error);
return res.status(500).json({ message: 'Internal server error', status: false });
}
return res.status(200).json({ success: true, data: results, status: true });
})
})
router.put('/kelas', async (req, res) => {
const { id, kelas } = req.body;
const query = 'UPDATE tb_kelas SET nama_kelas = ? WHERE id_kelas = ?';
connection.query(query, [ kelas, id], (error, results) => {
if (error) {
console.log('error update kelas', error);
return res.status(500).json({ message: 'Internal server error', status: false });
}
return res.status(200).json({ success: true, data: results, status: true });
})
})
router.delete('/kelas/:id', async (req, res) => {
const { id } = req.params;
const query = 'DELETE FROM tb_kelas WHERE id_kelas = ?';
connection.query(query, [ id], (error, results) => {
if (error) {
console.log('error delete kelas', error);
return res.status(500).json({ message: 'Internal server error', status: false });
}
return res.status(200).json({ success: true, data: results, status: true });
})
})
// end kelas
// begin siswa
router.get('/siswa', async (req, res) => {
res.sendFile(__dirname + '/ui/admin/siswa.html');
})
router.post('/siswa', async (req, res) => {
const { nis, nama, kelas , nama_kelas, angkatan , nik , tempat_lahir , tanggal_lahir , jenis_kelamin , agama , orang_tua1 , orang_tua2 , no_hp_orang_tua , alamat } = req.body;
const { gambar } = req.files;
console.log(gambar)
console.log("nama", nama)
console.log("nis", nis)
console.log("kelas", kelas)
console.log("nama_kelas", nama_kelas)
console.log("angkatan", angkatan)
console.log("nik", nik)
console.log("tempat_lahir", tempat_lahir)
console.log("tanggal_lahir", tanggal_lahir)
console.log("enis_kelamin", jenis_kelamin)
console.log("agama", agama)
console.log("orang_tua1", orang_tua1)
console.log("orang_tua2", orang_tua2)
console.log("no_hp_orang_tua", no_hp_orang_tua)
console.log("alamat", alamat)
})
module.exports = router

20
routes/before_login_route.js Executable file
View File

@ -0,0 +1,20 @@
const express = require('express');
const router = express.Router();
const dotenv = require('dotenv');
const mysql = require('mysql');
const md5 = require('md5');
dotenv.config();
router.get('/', async (req, res) => {
// run the login file in parent folder /ui
res.sendFile(__dirname + '/ui/login.html');
})
router.get('/kelas', async (req, res) => {
// run the login file in parent folder /ui
res.sendFile(__dirname + '/ui/login.html');
})
module.exports = router

119
routes/ui/admin/index.html Executable file
View File

@ -0,0 +1,119 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
<meta name="description" content="">
<meta name="author" content="">
<title>Halaman Utama</title>
<!-- Main Styles -->
<link rel="stylesheet" href="/styles/style.min.css">
<!-- mCustomScrollbar -->
<link rel="stylesheet" href="/plugin/mCustomScrollbar/jquery.mCustomScrollbar.min.css">
<!-- Waves Effect -->
<link rel="stylesheet" href="/plugin/waves/waves.min.css">
<!-- Sweet Alert -->
<link rel="stylesheet" href="/plugin/sweet-alert/sweetalert.css">
<link rel="stylesheet" href="/fonts/fontello/fontello.css">
</head>
<body>
<div class="main-menu">
<header class="header">
<a href="/admin" class="logo">Sekolah</a>
<button type="button" class="button-close fa fa-times js__menu_close"></button>
<div class="user">
<a href="#" class="avatar"><img src="http://placehold.it/80x80" alt=""><span class="status online"></span></a>
<h5 class="name"><a href="profile.html">Admin</a></h5>
<h5 class="position">Admin</h5>
</div>
<!-- /.user -->
</header>
<!-- /.header -->
<div class="content">
<div class="navigation">
<h5 class="title">Navigasi</h5>
<!-- /.title -->
<ul class="menu js__accordion">
<li class="current active">
<a class="waves-effect" href="/admin"><i class="menu-icon fa fa-home"></i><span>Halaman Utama</span></a>
</li>
<li>
<a class="waves-effect" href="/admin/kelas"><i class="menu-icon fa fa-users"></i><span>Pengaturan Kelas</span></a>
</li>
<li>
<a class="waves-effect" href="#" onclick="logout()"><i class="menu-icon ico icon-logout"></i><span>Logout</span></a>
</li>
</ul>
</div>
<!-- /.navigation -->
</div>
<!-- /.content -->
</div>
<!-- /.main-menu -->
<div class="fixed-navbar">
<div class="pull-left">
<button type="button" class="menu-mobile-button glyphicon glyphicon-menu-hamburger js__menu_mobile"></button>
<h1 class="page-title">Halaman Utama</h1>
<!-- /.page-title -->
</div>
<!-- /.pull-left -->
<div class="pull-right">
<a href="#" class="ico-item ico icon-logout" onclick="logout()"></a>
</div>
<!-- /.pull-right -->
</div>
<!-- /.fixed-navbar -->
<div id="wrapper">
<div class="main-content">
<footer class="footer">
<ul class="list-inline">
<li>2024 © Sekolah.</li>
<!-- <li><a href="#">Privacy</a></li>
<li><a href="#">Terms</a></li>
<li><a href="#">Help</a></li> -->
</ul>
</footer>
</div>
<!-- /.main-content -->
</div><!--/#wrapper -->
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
<!--[if lt IE 9]>
<script src="/script/html5shiv.min.js"></script>
<script src="/script/respond.min.js"></script>
<![endif]-->
<!--
================================================== -->
<!-- Placed at the end of the document so the pages load faster -->
<script src="/scripts/jquery.min.js"></script>
<script src="/scripts/modernizr.min.js"></script>
<script src="/plugin/bootstrap/js/bootstrap.min.js"></script>
<script src="/plugin/mCustomScrollbar/jquery.mCustomScrollbar.concat.min.js"></script>
<script src="/plugin/nprogress/nprogress.js"></script>
<script src="/plugin/sweet-alert/sweetalert.min.js"></script>
<script src="/plugin/waves/waves.min.js"></script>
<!-- Full Screen Plugin -->
<script src="/plugin/fullscreen/jquery.fullscreen-min.js"></script>
<script src="/scripts/main.min.js"></script>
<script src="/my-js.js"></script>
]
</body>
</html>

437
routes/ui/admin/kelas.html Executable file
View File

@ -0,0 +1,437 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
<meta name="description" content="">
<meta name="author" content="">
<title>Halaman Kelas</title>
<!-- Main Styles -->
<link rel="stylesheet" href="/styles/style.min.css">
<!-- mCustomScrollbar -->
<link rel="stylesheet" href="/plugin/mCustomScrollbar/jquery.mCustomScrollbar.min.css">
<!-- Waves Effect -->
<link rel="stylesheet" href="/plugin/waves/waves.min.css">
<!-- Sweet Alert -->
<link rel="stylesheet" href="/plugin/sweet-alert/sweetalert.css">
<link rel="stylesheet" href="/fonts/fontello/fontello.css">
<!-- <link rel="stylesheet" href="/plugin/datatables/media/css/dataTables.bootstrap.min.css"> -->
<link rel="stylesheet" href="/fonts/material-design-iconic-font/css/material-design-iconic-font.min.css">
</head>
<body>
<div class="main-menu">
<header class="header">
<a href="/admin" class="logo">Sekolah</a>
<button type="button" class="button-close fa fa-times js__menu_close"></button>
<div class="user">
<a href="#" class="avatar"><img src="http://placehold.it/80x80" alt=""><span
class="status online"></span></a>
<h5 class="name"><a href="profile.html">Admin</a></h5>
<h5 class="position">Admin</h5>
</div>
<!-- /.user -->
</header>
<!-- /.header -->
<div class="content">
<div class="navigation">
<h5 class="title">Navigasi</h5>
<!-- /.title -->
<ul class="menu js__accordion">
<li>
<a class="waves-effect" href="/admin"><i class="menu-icon fa fa-home"></i><span>Halaman
Utama</span></a>
</li>
<li class="current active">
<a class="waves-effect" href="/admin/kelas"><i
class="menu-icon zmdi zmdi-collection-text"></i><span>Pengaturan Kelas</span></a>
</li>
<li >
<a class="waves-effect" href="/admin/siswa"><i
class="menu-icon fa fa-users"></i><span>Siswa</span></a>
</li>
<li>
<a class="waves-effect" href="#" onclick="logout()"><i
class="menu-icon ico icon-logout"></i><span>Logout</span></a>
</li>
</ul>
</div>
<!-- /.navigation -->
</div>
<!-- /.content -->
</div>
<!-- /.main-menu -->
<div class="fixed-navbar">
<div class="pull-left">
<button type="button"
class="menu-mobile-button glyphicon glyphicon-menu-hamburger js__menu_mobile"></button>
<h1 class="page-title">Halaman Kelas</h1>
<!-- /.page-title -->
</div>
<!-- /.pull-left -->
<div class="pull-right">
<a href="#" class="ico-item ico icon-logout" onclick="logout()"></a>
</div>
<!-- /.pull-right -->
</div>
<!-- /.fixed-navbar -->
<div id="wrapper">
<div class="main-content">
<div class="row small-spacing">
<div class="col-xs-12">
<div class="box-content">
<h4 class="box-title"><button type="button"
class="btn btn-info btn-rounded waves-effect waves-light" onclick="addKelasOpenModal()">Tambah Kelas</button></h4>
<!-- /.box-title -->
<table id="example" class="table table-striped table-bordered display" style="width:100%">
<thead>
<tr>
<th>Nama Kelas</th>
<th>Aksi</th>
</tr>
</thead>
<tbody id="tbody">
</tbody>
</table>
</div>
<!-- /.box-content -->
</div>
</div>
<footer class="footer">
<ul class="list-inline">
<li>2024 © Sekolah.</li>
<!-- <li><a href="#">Privacy</a></li>
<li><a href="#">Terms</a></li>
<li><a href="#">Help</a></li> -->
</ul>
</footer>
</div>
<!-- /.main-content -->
</div><!--/#wrapper -->
<div class="modal fade" id="boostrapModal-3" tabindex="-1" role="dialog" aria-labelledby="myModalLabel-2">
<div class="modal-dialog modal-sm" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span
aria-hidden="true">&times;</span></button>
<h4 class="modal-title" id="myModalLabel-2">Form Tambah Kelas</h4>
</div>
<div class="modal-body">
<div class="form-group">
<label class="control-label">Nama Kelas</label>
<input type="text" class="form-control" placeholder="Masukkan Nama Kelas" id="nama-kelas">
<input type="hidden" id="id-kelas">
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default btn-sm waves-effect waves-light"
data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary btn-sm waves-effect waves-light" id="btn-tambah-kelas"
onclick="tambahKelas()">Tambah kelas</button>
<button type="button" class="btn btn-primary btn-sm waves-effect waves-light" id="btn-update-kelas" onclick="updateKelas()">Update kelas</button>
</div>
</div>
</div>
</div>
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
<!--[if lt IE 9]>
<script src="/script/html5shiv.min.js"></script>
<script src="/script/respond.min.js"></script>
<![endif]-->
<!--
================================================== -->
<!-- Placed at the end of the document so the pages load faster -->
<script src="/scripts/jquery.min.js"></script>
<script src="/scripts/modernizr.min.js"></script>
<script src="/plugin/bootstrap/js/bootstrap.min.js"></script>
<script src="/plugin/mCustomScrollbar/jquery.mCustomScrollbar.concat.min.js"></script>
<script src="/plugin/nprogress/nprogress.js"></script>
<script src="/plugin/sweet-alert/sweetalert.min.js"></script>
<script src="/plugin/waves/waves.min.js"></script>
<!-- Full Screen Plugin -->
<script src="/plugin/fullscreen/jquery.fullscreen-min.js"></script>
<!-- <script src="/plugin/datatables/media/js/jquery.dataTables.min.js"></script>
<script src="/plugin/datatables/media/js/dataTables.bootstrap.min.js"></script>
<script src="/plugin/datatables/extensions/Responsive/js/dataTables.responsive.min.js"></script> -->
<script src="/block/jquery.blockUI.js"></script>
<script src="/scripts/main.min.js"></script>
<script src="/my-js.js"></script>
<script>
function addKelasOpenModal() {
$('#boostrapModal-3').modal('show');
$('#nama-kelas').val('')
$('#myModalLabel-2').html('Form Tambah Kelas')
$('#id-kelas').val('')
$('#btn-update-kelas').hide()
$('#btn-tambah-kelas').show()
}
function tambahKelas() {
let kelas = $('#nama-kelas').val();
if (kelas == '') {
swal({
type: "warning",
title: "Kelas harus diisi",
// text: "Kelas harus diisi"
})
return
}
swal({
type: "info",
title: "Yakin?",
text: "Kelas akan ditambahkan",
showCancelButton: !0,
// confirmButtonColor: "#DD6B55",
confirmButtonText: "Ya",
cancelButtonText: "Tidak",
}, function (y) {
if (y) {
$.ajax({
url: '/admin/kelas',
type: 'POST',
data: {
kelas: kelas
},
beforeSend: function () {
// close modal
$('#boostrapModal-3').modal('hide')
blockUI('Loading')
},
success: function (data) {
console.log(data)
$.unblockUI();
swal({
type: "success",
title: "Sukses",
text: "Kelas ditambahkan",
timer: 2000,
showConfirmButton: !1
})
getKelas()
},
error: function (jqXHR, textStatus, errorThrown) {
$.unblockUI();
swal({
type: "error",
title: "Error",
text: errorThrown,
timer: 2000,
showConfirmButton: !1
// close after 2 seconds
}, function () {
// open modal
$('#boostrapModal-3').modal('show')
$('#nama-kelas').val(kelas)
// close swal
swal.close()
})
}
})
}
})
}
function edit_kelas_open_modal(id, kelas) {
$('#boostrapModal-3').modal('show');
$('#nama-kelas').val(kelas)
$('#id-kelas').val(id)
$('#myModalLabel-2').html('Form Edit Kelas')
$('#btn-update-kelas').show()
$('#btn-tambah-kelas').hide()
}
function updateKelas() {
let id = $('#id-kelas').val();
let kelas = $('#nama-kelas').val();
if (kelas == '') {
swal({
type: "warning",
title: "Kelas harus diisi",
// text: "Kelas harus diisi"
})
return
}
swal({
type: "info",
title: "Yakin?",
text: "Kelas akan diupdate",
showCancelButton: !0,
// confirmButtonColor: "#DD6B55",
confirmButtonText: "Ya",
cancelButtonText: "Tidak",
} , function (y) {
if (y) {
$.ajax({
url: '/admin/kelas',
type: 'PUT',
data: {
id: id,
kelas: kelas
},
beforeSend: function () {
// close modal
$('#boostrapModal-3').modal('hide')
blockUI('Loading')
},
success: function (data) {
console.log(data)
$.unblockUI();
swal({
type: "success",
title: "Sukses",
text: "Kelas diupdate",
timer: 2000,
showConfirmButton: !1
})
getKelas()
},
error: function (jqXHR, textStatus, errorThrown) {
$.unblockUI();
swal({
type: "error",
title: "Error",
text: errorThrown,
timer: 2000,
showConfirmButton: !1
})
$('#boostrapModal-3').modal('show')
$('#nama-kelas').val(kelas)
// close swal
}
})
}
})
}
function deleteKelas(id) {
swal({
type: "warning",
title: "Yakin?",
text: "Kelas akan dihapus",
showCancelButton: !0,
confirmButtonColor: "#DD6B55",
confirmButtonText: "Ya",
cancelButtonText: "Tidak",
confirmButtonColor: "#f60e0e"
} , function (y) {
if (y) {
$.ajax({
url: '/admin/kelas/' + id,
type: 'DELETE',
beforeSend: function () {
blockUI('Loading')
},
success: function (data) {
console.log(data)
$.unblockUI();
swal({
type: "success",
title: "Sukses",
text: "Kelas dihapus",
timer: 2000,
showConfirmButton: !1
})
getKelas()
},
error: function (jqXHR, textStatus, errorThrown) {
$.unblockUI();
swal({
type: "error",
title: "Error",
text: errorThrown,
timer: 2000,
showConfirmButton: !1
})
}
})
}
})
}
function getKelas() {
$.ajax({
url: '/admin/kelas/get',
type: 'GET',
beforeSend: function () {
//
$('#tbody').html('<tr><td colspan="3"><center>Loading...</center></td></tr>')
},
success: function (json) {
// console.log(data)
const data = json.data
if (data.length == 0) {
let html = 'Belum ada kelas yang ditambahkan'
$('#tbody').html('<tr><td colspan="3"><center>' + html + '</center></td></tr>')
return;
}
let html = ''
for (let i = 0; i < data.length; i++) {
html += '<tr>' +
// '<td>' + (i + 1) + '</td>' +
'<td>' + data[i].nama_kelas + '</td>' +
'<td>' +
`<button type='button' onclick='edit_kelas_open_modal(${data[i].id_kelas}, "${data[i].nama_kelas}")' title='Edit Kelas' class='btn btn-info btn-circle btn-sm waves-effect waves-light'><i class='ico zmdi zmdi-info'></i></button> ` +
`<button type='button' onclick='deleteKelas(${data[i].id_kelas})' title='Hapus Kelas' class='btn btn-danger btn-circle btn-sm waves-effect waves-light'><i class='ico zmdi zmdi-delete'></i></button>` +
'</td>' +
'</tr>'
}
$('#tbody').html(html)
},
error: function (jqXHR, textStatus, errorThrown) {
// $.unblockUI();
$('#tbody').html('<tr><td colspan="3"><center>Error loading data</center></td></tr>')
}
})
}
getKelas()
</script>
</body>
</html>

428
routes/ui/admin/siswa.html Executable file
View File

@ -0,0 +1,428 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
<meta name="description" content="">
<meta name="author" content="">
<title>Halaman Kelas</title>
<!-- Main Styles -->
<link rel="stylesheet" href="/styles/style.min.css">
<!-- mCustomScrollbar -->
<link rel="stylesheet" href="/plugin/mCustomScrollbar/jquery.mCustomScrollbar.min.css">
<!-- Waves Effect -->
<link rel="stylesheet" href="/plugin/waves/waves.min.css">
<!-- Sweet Alert -->
<link rel="stylesheet" href="/plugin/sweet-alert/sweetalert.css">
<link rel="stylesheet" href="/fonts/fontello/fontello.css">
<link rel="stylesheet" href="/plugin/datatables/media/css/dataTables.bootstrap.min.css">
<link rel="stylesheet" href="/fonts/material-design-iconic-font/css/material-design-iconic-font.min.css">
</head>
<body>
<div class="main-menu">
<header class="header">
<a href="/admin" class="logo">Sekolah</a>
<button type="button" class="button-close fa fa-times js__menu_close"></button>
<div class="user">
<a href="#" class="avatar"><img src="http://placehold.it/80x80" alt=""><span
class="status online"></span></a>
<h5 class="name"><a href="profile.html">Admin</a></h5>
<h5 class="position">Admin</h5>
</div>
<!-- /.user -->
</header>
<!-- /.header -->
<div class="content">
<div class="navigation">
<h5 class="title">Navigasi</h5>
<!-- /.title -->
<ul class="menu js__accordion">
<li>
<a class="waves-effect" href="/admin"><i class="menu-icon fa fa-home"></i><span>Halaman
Utama</span></a>
</li>
<li class="current active">
<a class="waves-effect" href="/admin/kelas"><i
class="menu-icon zmdi zmdi-collection-text"></i><span>Pengaturan Kelas</span></a>
</li>
<li>
<a class="waves-effect" href="/admin/siswa"><i
class="menu-icon fa fa-users"></i><span>Siswa</span></a>
</li>
<li>
<a class="waves-effect" href="#" onclick="logout()"><i
class="menu-icon ico icon-logout"></i><span>Logout</span></a>
</li>
</ul>
</div>
<!-- /.navigation -->
</div>
<!-- /.content -->
</div>
<!-- /.main-menu -->
<div class="fixed-navbar">
<div class="pull-left">
<button type="button"
class="menu-mobile-button glyphicon glyphicon-menu-hamburger js__menu_mobile"></button>
<h1 class="page-title">Halaman Siswa</h1>
<!-- /.page-title -->
</div>
<!-- /.pull-left -->
<div class="pull-right">
<a href="#" class="ico-item ico icon-logout" onclick="logout()"></a>
</div>
<!-- /.pull-right -->
</div>
<!-- /.fixed-navbar -->
<div id="wrapper">
<div class="main-content">
<div class="row small-spacing">
<div class="col-xs-12">
<div class="box-content card">
<h4 class="box-title">Form Siswa</h4>
<!-- /.box-title -->
<div class="card-content">
<div class="form-group">
<button type="button" class="btn btn-info btn-rounded waves-effect waves-light"
onclick="addSiswaOpenModal()">Tambah Siswa</button>
</div>
<table id="siswa" class="table table-striped table-bordered display" style="width:100%">
<thead>
<tr>
<th>NIS</th>
<th>Nama</th>
<th>Kelas</th>
<th>Angkatan</th>
<th>Aksi</th>
</tr>
</thead>
<tbody id="tbody">
</tbody>
</table>
</div>
</div>
<!-- /.box-content -->
</div>
</div>
<footer class="footer">
<ul class="list-inline">
<li>2024 © Sekolah.</li>
<!-- <li><a href="#">Privacy</a></li>
<li><a href="#">Terms</a></li>
<li><a href="#">Help</a></li> -->
</ul>
</footer>
</div>
<!-- /.main-content -->
</div><!--/#wrapper -->
<div class="modal fade" id="modal-tambah-siswa" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span
aria-hidden="true">&times;</span></button>
<h4 class="modal-title" id="modal-tambah-siswa-title">Modal title</h4>
</div>
<div class="modal-body">
<div class="form-group">
<!-- show the upload -->
<div id="show-upload" style="display: none">
<center>
<div id="preview" style="height: 200px; width: 150px"></div>
</center>
</div>
</div>
<div class="form-group">
<!-- create upload -->
<label for="modal-tambah-siswa-nama">Gambar</label>
<input type="file" class="form-control" id="gambar" accept="image/*"
onchange="showUpload(this)">
</div>
<div class="form-group">
<label for="modal-tambah-siswa-nama">NIS</label>
<input type="text" class="form-control" id="nis" oninput="numberOnly(this)" maxlength="10"
placeholder="Masukkan NIS">
</div>
<div class="form-group">
<label for="modal-tambah-siswa-nama">Nama</label>
<input type="text" class="form-control" id="nama" placeholder="Masukkan Nama">
</div>
<div class="form-group">
<label for="modal-tambah-siswa-nama">Kelas</label>
<select class="form-control" id="kelas">
<option value="" disabled selected>-Pilih Kelas</option>
<option value="10">7</option>
<option value="11">8</option>
<option value="12">9</option>
</select>
</div>
<div class="form-group">
<label for="modal-tambah-siswa-nama">Nama Kelas</label>
<select class="form-control" id="nama-kelas">
</select>
</div>
<div class="form-group">
<label for="modal-tambah-siswa-nama">Angkatan</label>
<select class="form-control" id="angkatan">
</select>
</div>
<hr>
<div class="form-group">
<label for="modal-tambah-siswa-nama">NIK</label>
<input type="text" class="form-control" id="nik" oninput="numberOnly(this)" maxlength="16"
placeholder="Masukkan NIK">
</div>
<div class="form-group">
<label for="modal-tambah-siswa-nama">Tempat Lahir</label>
<input type="text" class="form-control" id="tempat-lahir" placeholder="Masukkan Tempat Lahir">
</div>
<div class="form-group">
<label for="modal-tambah-siswa-nama">Tanggal Lahir</label>
<input type="date" class="form-control" id="tanggal-lahir">
</div>
<div class="form-group">
<label for="modal-tambah-siswa-nama">Jenis Kelamin</label>
<select class="form-control" id="jenis-kelamin">
<option value="" disabled selected>-Pilih Jenis Kelamin</option>
<option value="Laki-laki">Laki-laki</option>
<option value="Perempuan">Perempuan</option>
</select>
</div>
<div class="form-group">
<label for="modal-tambah-siswa-nama">Agama</label>
<select class="form-control" id="agama">
<option value="" disabled selected>-Pilih Agama</option>
<option value="Islam">Islam</option>
<option value="Kristen">Kristen</option>
<option value="Katolik">Katolik</option>
<option value="Hindu">Hindu</option>
<option value="Budha">Budha</option>
</select>
</div>
<div class="form-group">
<label for="modal-tambah-siswa-nama">Nama Orang Tua</label>
<input type="text" class="form-control" id="orang-tua1" placeholder="Masukkan Orang Tua">
</div>
<div class="form-group">
<label for="modal-tambah-siswa-nama">Nama Orang Tua</label>
<input type="text" class="form-control" id="orang-tua2" placeholder="Masukkan Orang Tua">
</div>
<div class="form-group">
<label for="modal-tambah-siswa-nama">No HP Orang Tua</label>
<input type="text" class="form-control" id="no-hp-orang-tua"
placeholder="Masukkan No HP Orang Tua">
</div>
<div class="form-group">
<label for="modal-tambah-siswa-nama">Alamat</label>
<textarea class="form-control" id="alamat" placeholder="Masukkan Alamat"
style="resize: none"></textarea>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default btn-sm waves-effect waves-light"
data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary btn-sm waves-effect waves-light"
id="btn-tambah-mahasiswa" onclick="tambahSiswa()">Tambah Mahasiswa</button>
</div>
</div>
</div>
</div>
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
<!--[if lt IE 9]>
<script src="/script/html5shiv.min.js"></script>
<script src="/script/respond.min.js"></script>
<![endif]-->
<!--
================================================== -->
<!-- Placed at the end of the document so the pages load faster -->
<script src="/scripts/jquery.min.js"></script>
<script src="/scripts/modernizr.min.js"></script>
<script src="/plugin/bootstrap/js/bootstrap.min.js"></script>
<script src="/plugin/mCustomScrollbar/jquery.mCustomScrollbar.concat.min.js"></script>
<script src="/plugin/nprogress/nprogress.js"></script>
<script src="/plugin/sweet-alert/sweetalert.min.js"></script>
<script src="/plugin/waves/waves.min.js"></script>
<!-- Full Screen Plugin -->
<script src="/plugin/fullscreen/jquery.fullscreen-min.js"></script>
<script src="/plugin/datatables/media/js/jquery.dataTables.min.js"></script>
<script src="/plugin/datatables/media/js/dataTables.bootstrap.min.js"></script>
<script src="/plugin/datatables/extensions/Responsive/js/dataTables.responsive.min.js"></script>
<script src="/block/jquery.blockUI.js"></script>
<script src="/scripts/main.min.js"></script>
<script src="/my-js.js"></script>
<script>
$('#siswa').DataTable({
})
function fistLoad() {
// get today year
var today = new Date();
const year = today.getFullYear();
var html_angkatan = "<option value='' disabled selected>-Pilih Angkatan-</option>"
// loop the year to 2015
for (let i = year; i >= 2015; i--) {
html_angkatan += `<option value="${i}">${i}</option>`
}
$('#angkatan').html(html_angkatan)
$.ajax({
type: 'GET',
url: '/admin/kelas/get',
dataType: 'json',
beforeSend: function () {
},
success: function (json) {
const data = json.data
var html = "<option value='' disabled selected>-Pilih Nama Kelas-</option>"
for (let i = 0; i < data.length; i++) {
html += `<option value="${data[i].id_kelas}">${data[i].nama_kelas}</option>`
}
$('#nama-kelas').html(html)
},
})
}
fistLoad()
function addSiswaOpenModal() {
$('#modal-tambah-siswa-title').text('Form Tambah Siswa');
$('#modal-tambah-siswa-nis').val('');
$("#show-upload").hide();
$('#gambar').val('');
$('#modal-tambah-siswa').modal('show');
}
function numberOnly(element) { //only number and remove comma
element.value = element.value.replace(/[^0-9]/g, '');
element.value = element.value.replace(/,/g, '');
}
function showUpload(element) {
var file = element.files[0];
if (file) {
var reader = new FileReader();
reader.onload = function (event) {
var imageUrl = event.target.result;
// Create an image element
var img = document.createElement('img');
img.src = imageUrl;
img.style.maxWidth = '100%'; // Make the image fit the width of the div
img.style.maxHeight = '100%'; // Make the image fit the height of the div
// Get the preview div
var previewDiv = document.getElementById('preview');
$('#show-upload').show();
// Clear any existing content in the preview div
previewDiv.innerHTML = '';
// Append the image to the preview div
previewDiv.appendChild(img);
}
reader.readAsDataURL(file);
}
}
function tambahSiswa() {
if ($("gambar").val() == '') return alert('Upload Gambar');
if ($('#nis').val() == '') return alert('Masukkan NIS');
if ($('#nama').val() == '') return alert('Masukkan Nama');
if ($("#kelas").val() == '') return alert('Pilih Kelas');
if ($("#nama-kelas").val() == '') return alert('Pilih Nama Kelas');
if ($('#angkatan').val() == '') return alert('Pilih Angkatan');
if ($('#nik').val() == '') return alert('Masukkan NIK');
if ($('#nik').val() < 16) return alert('NIK Minimal 16 Digit');
if ($('#tempat-lahir').val() == '') return alert('Masukkan Tempat Lahir');
if ($('#tanggal-lahir').val() == '') return alert('Masukkan Tanggal Lahir');
if ($('#jenis-kelamin').val() == '') return alert('Pilih Jenis Kelamin');
if ($('#agama').val() == '') return alert('Pilih Agama');
if ($('#orang-tua1').val() == '') return alert('Masukkan Orang Tua 1');
if ($('#orang-tua2').val() == '') return alert('Masukkan Orang Tua 2');
if ($('#no-hp-orang-tua').val() == '') return alert('Masukkan No HP Orang Tua');
if ($('#no-hp-orang-tua').val() < 11) return alert('No HP Orang Tua Minimal 11 Digit');
if ($('#alamat').val() == '') return alert('Masukkan Alamat');
// create a FormData and using ajax to upload file
var formData = new FormData();
formData.append('gambar', $("#gambar")[0].files[0]); // Assuming "gambar" is the file input id
formData.append('nis', $('#nis').val());
formData.append('nama', $('#nama').val());
formData.append('kelas', $("#kelas").val());
formData.append('nama_kelas', $("#nama-kelas").val());
formData.append('angkatan', $('#angkatan').val());
formData.append('nik', $('#nik').val());
formData.append('tempat_lahir', $('#tempat-lahir').val());
formData.append('tanggal_lahir', $('#tanggal-lahir').val());
formData.append('jenis_kelamin', $('#jenis-kelamin').val());
formData.append('agama', $('#agama').val());
formData.append('orang_tua1', $('#orang-tua1').val());
formData.append('orang_tua2', $('#orang-tua2').val());
formData.append('no_hp_orang_tua', $('#no-hp-orang-tua').val());
formData.append('alamat', $('#alamat').val());
// Performing AJAX upload
$.ajax({
url: '/admin/siswa',
type: 'POST',
data: formData,
processData: false,
contentType: false,
beforeSend: function () {
$('#boostrapModal-3').modal('hide')
blockUI('Loading')
},
success: function (response) {
// Handle success response
console.log(response);
},
error: function (xhr, status, error) {
// Handle error
console.error(xhr.responseText);
}
});
}
</script>
</body>
</html>

61
routes/ui/login.html Executable file
View File

@ -0,0 +1,61 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
<meta name="description" content="">
<meta name="author" content="">
<title>Home</title>
<link rel="stylesheet" href="/styles/style.min.css">
<!-- Waves Effect -->
<link rel="stylesheet" href="/plugin/waves/waves.min.css">
</head>
<body>
<div id="single-wrapper">
<form action="#" class="frm-single">
<div class="inside">
<div class="title"><strong>Sekolah</strong></div>
<!-- /.title -->
<div class="frm-title">Login</div>
<!-- /.frm-title -->
<div class="frm-input"><input type="text" placeholder="Username" class="frm-inp"><i class="fa fa-user frm-ico"></i></div>
<!-- /.frm-input -->
<div class="frm-input"><input type="password" placeholder="Password" class="frm-inp"><i class="fa fa-lock frm-ico"></i></div>
<!-- /.frm-input -->
<!-- /.clearfix -->
<a href="/admin" class="a-link"><button type="button" class="frm-submit">Login<i class="fa fa-arrow-circle-right"></i></button></a>
<!-- /.row -->
<a href="/" class="a-link"><i class="fa fa-arrow-circle-left"></i>Kembali ke Halaman Utama.</a>
<div class="frm-footer">Sekolah © 2024.</div>
<!-- /.footer -->
</div>
<!-- .inside -->
</form>
<!-- /.frm-single -->
</div><!--/#single-wrapper -->
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
<!--[if lt IE 9]>
<script src="/script/html5shiv.min.js"></script>
<script src="/script/respond.min.js"></script>
<![endif]-->
<!--
================================================== -->
<!-- Placed at the end of the document so the pages load faster -->
<script src="/scripts/jquery.min.js"></script>
<script src="/scripts/modernizr.min.js"></script>
<script src="/plugin/bootstrap/js/bootstrap.min.js"></script>
<script src="/plugin/nprogress/nprogress.js"></script>
<script src="/plugin/waves/waves.min.js"></script>
<script src="/scripts/main.min.js"></script>
</body>
</html>