Wednesday, 21 November 2018

Membuat CRUD Sederhana Dengan Firebase Javascript dan Bootstrap

Assalamu'alaikum warahmatullahiwabarokatuh, selamat malam teman-teman :D,
pada postingan kali ini saya akan berbagi cara membuat CRUD sederhana dengan firebase dan javascript yang di kombinasikan dengan bootstrap css framework, pertama teman2 harus download bootstrap dulu, atau kalau sudah punya file-nya tidak perlu download :D, untuk mengikuti tutorial ini teman-teman harus punya account firebase jika belum langsung saja daftar atau lihat DISINI cara membuat account firebase.

ok, teman2 buat folder dengan nama firebasejs atau apa saja terserah teman2, copy kan folder (css, js, fonts) yang ada pada bootsrap teman2 kedalam folder firebasejs. Setelah itu buat file baru didalam folder firebasejs dengan nama index.html dan tuliskan source code seperti berikut :


<!DOCTYPE html>
<html>
<head>
 <title>CRUD Firebase</title>
 <meta charset="utf-8">
 <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

 <!-- Bootstrap CSS -->
 <link rel="stylesheet" type="text/css" href="css/bootstrap.min.css" >
 <link rel="stylesheet" type="text/css" href="css/style.css">
 <script src="https://www.gstatic.com/firebasejs/5.4.2/firebase.js"></script>
 <script type="text/javascript">

  var config = {
   apiKey: "AIzaSyA71hPWUdEqgymNFTHg462yFJ_bWDAkHcA",
   authDomain: "exam-aff8f.firebaseapp.com",
   databaseURL: "https://exam-aff8f.firebaseio.com",
   projectId: "exam-aff8f",
   storageBucket: "",
   messagingSenderId: "133123398372"
  };

  firebase.initializeApp(config); 

 </script>
</head>
<body>
 <h1>Firebase JS CRUD</h1>
 <button class="btn btn-primary btnTambahData" data-toggle="modal" onclick="cleardata()" data-target="#exampleModal">Tambah Data</button>
 <table class="table table-striped" id="tbl_list_user">
  <thead>
   <tr>
    <th scope="col">No.</th>
    <th scope="col">Nama</th>
    <th scope="col">Email</th>
    <th scope="col">Alamat</th>
    <th scope="col">Aksi</th>
   </tr>
  </thead>
 </table>


 <!-- Modal -->
 <div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
  <div class="modal-dialog" role="document">
   <div class="modal-content">
    <div class="modal-header">
     <h5 class="modal-title" id="exampleModalLabel"></h5>
     <button type="button" class="close" data-dismiss="modal" aria-label="Close">
      <span aria-hidden="true">&times;</span>
     </button>
    </div>
    <form action="" method="POST" enctype="multipart/form-data">
     <div class="modal-body">     
      <input type="hidden" name="id" id="id">
      <div class="form-group">
       <label for="nama">Nama</label>
       <input type="text" name="nama" id="nama" class="form-control" placeholder="Masukkan nama" required="true">
      </div>
      <div class="form-group">
       <label for="email">Email</label>
       <input type="email" name="email" id="email" class="form-control" placeholder="Masukkan email" required="true">
      </div>
      <div class="form-group">
       <label for="alamat">Alamat</label>
       <input type="text" name="alamat" id="alamat" class="form-control" placeholder="Masukkan alamat" required="true">
      </div>
     </div>

     <div class="modal-footer">
      <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
      <button type="button" class="btn btn-primary" onclick="tambahData()" data-dismiss="modal">Simpan</button>
     </div>
    </form>
   </div>
  </div>
 </div>

 <!-- <script src="js/jquery.js"></script>     -->

 <script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
 <script src="js/jquery.easing.1.3.js"></script>
 <script src="js/bootstrap.min.js"></script>
 <script src="js/hm.js"></script>

 <script type="text/javascript">
  var database = firebase.database();
  var key = 0;

  database.ref("users").orderByKey().limitToLast(1).on('child_added',function(data) {
   key = parseInt(data.key, 10);
   key = key + 1;
  });

  database.ref('users').on('value', function(snapshot) {
   var count = 0;
   if(snapshot.exists()){
    $("#tbl_list_user tbody").remove(); 
    var content = '<tbody>';
    snapshot.forEach(function(data) {
     count+=1;
     var val = data.val();
                 content +='<tr>';
                 content += '<td>' + count + '</td>';
                 content += '<td>' + val.username + '</td>';
                 content += '<td>' + val.email + '</td>';
                 content += '<td>' + val.address + '</td>';
                 content += '<td> <button class="btn btn-danger" onclick="hapusData(' + data.key + ')"> Hapus Data </button> <button class="btn btn-primary tampilModalUbah" onclick="setData('+ data.key +')" data-toggle="modal" data-target="#exampleModal">Edit Data</button>  </td>';
                 content +='</tr>';
                 key = 0;
     key = parseInt(data.key, 10);
     key = key + 1;
    });

    content += '</tbody>';
    $('#tbl_list_user').append(content);
   }else{
    $("#tbl_list_user tbody").remove(); 
   }  
  });


  function tambahData(){
   if($('#exampleModalLabel').text() == "Tambah Data Baru"){
    if(key == 0){
     key = 1;
    }

    database.ref('users/' + key).set({
     username: $('#nama').val(),
     email   : $('#email').val(),
     address : $('#alamat').val()
    });

    alert("Data Berhasil ditambah");
   }else if($('#exampleModalLabel').text() == "Ubah Data"){
    database.ref('users/' + $('#id').val()).update({
     username: $('#nama').val(),
     email   : $('#email').val(),
     address : $('#alamat').val()
    });
    alert("Data Berhasil diupdate");
   }
  } 


  function cleardata(){
   $('#id').val("");
   $('#nama').val("");
   $('#email').val("");
   $('#alamat').val("");
  }


  function setData(id){
   $('#exampleModalLabel').html('Ubah Data');   
   database.ref('users/').child(id).once('value').then( function(snap) {
       const user = snap.val()
       $('#id').val(id);
    $('#nama').val(user.username);
    $('#email').val(user.email);
    $('#alamat').val(user.address);
   });
  }


  function hapusData(id){
   var answer = confirm("Hapus Data..?");
   if (answer) {
       database.ref('users/' + id).remove();
       alert("Data Berhasil dihapus");
   }
  } 

$('.btnTambahData').on('click', function(){
        $('#exampleModalLabel').html('Tambah Data Baru');
    });

 </script>
</body>
</html>

Berikut contoh screen shot hasilnya :









Sekian sharing kali ini semoga bermanfaat, terimakasih :D

Saturday, 3 November 2018

Aplikasi Komputerisasi BPN Kabupaten Malang

Aplikasi ini saya buat pada saat magang di BPN kabupaten malang dulu saat masih kuliah, aplikasi ini hanya digunakan untuk melakukan pecatatan data hasil pengukuran tanah yang dilakukan oleh petugas dilapagan, dimana sebelumnya hanya melakukan pencatatan menggunakan excell, ok itu sekilas penjelasan singkat tentang aplikasi ini, untuk tampilannya bisa dilihat pada gambar2 dibawah ini:













untuk skin tampilannya saya menggunakan devExpress, :D

Friday, 2 November 2018

Aplikasi Purchase Requisition Dengan PHP SQL Server dan Easyui

Halo semuanya, pada postingan ini saya akan sharing sebuah aplikasi sederhana yaitu aplikasi untuk membuat permintaan pembelian barang atau purchase requisition, dalam aplikasi ini terdapat 4 level user yaitu user pembuat permintaan, manager, general manager dan admin. Berikut contoh tampilan aplikasinya :

Halaman login



Halaman user
untuk halaman user halaman defaultnya adalah langsung ke halaman create order/purchase requisition dan tampilannya seperti berikut :


ketika akan membuat order/PR baru item2 yang akan dibuat permintaan bisa di tambahkan dengan cara klik tombol Add new item, setelah itu akan muncul tampilan seperti berikut :


pada tampilan diatas user bisa memilih item yang akan dimasukkan, jumlahnya berapa harganya berapa dan bisa di tambahkan remark




jika sudah tekan tombol save dan akan muncul informasi nomor PR yang kita buat seperti gambar berikut :


List PR yang sudah dibuat akan muncul di menu list order, dalam menu list order dilakukan proses confirm agar PR yang sudah dibuat bisa dilihat oleh manager dan dilakukan approval


setelah di confirm statusnya akan berubah seperti gambar berikut :



halaman manager
pada halaman manager defaultnya adalah halaman list PR yang akan di approve, untuk approvenya harus dipilih satu persatu lalu di proses approve atau reject dan bisa juga dalam satu PR jika itemnya lebih dari satu ada yang di approve dan ada yang di reject



halaman utama general manager, dihalaman GM ini hanya akan muncul list PR yang sudah di approve oleh Manager



halaman admin, dihalaman admin terdapat 2 menu utama yaitu list department dan manage user, menu list department ini untuk menambah atau mengahapus department sedangkan menu manage user digunakan untuk mengatur otorisasi user, dan department user serta atasan user


aplikasinya masih bisa dikembangkan lagi dengan ditambahkan fitur pembuatan purchase order berdasarkan PR sampai kedatangan barang dan proses penerimaan barang.
demikian aplikasi PR sederhana ini smoga bermanfaat.


Untuk aplikasi yang memilki fitur lebih komplit bisa dilihat di link berikut :


Membuat Portfolio Sederhana Dengan Bootstrap

Pada postingan ini saya akan sharing membuat web portfolio sederhana menggunakan bootstrap dan html, untuk tampilannya kurang lebih seperti gambar berikut :





pertama2 buat sebuah folder dengan nama portfolio dan setelah itu download bootstrap, setelah itu copy folder css, js dan fonts dan buat satu folder img untuk menyimpan gambar yang ada di file downloadnya ke folder portfolio dan buat file baru didalam folder portfolio dengan nama index.html
untuk source codenya seperti berikut :

<!doctype html>
<html lang="en" id="home">
  <head>
    <!-- Required meta tags -->
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

    <!-- Bootstrap CSS -->
    <link rel="stylesheet" type="text/css" href="css/bootstrap.min.css" >
    <link rel="stylesheet" type="text/css" href="css/style.css">
    

    <title>My Portfolio</title>
  </head>
  <body>

  <!-- navbar -->
  <nav class="navbar navbar-inverse navbar-fixed-top">
  <div class="container-fluid">
  <div class="navbar-header">
  <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collpase-1" aria-expanded="false">
 
  <span class="sr-only">Toggle Navigation</span>
  <span class="icon-bar"></span>
  <span class="icon-bar"></span>
  <span class="icon-bar"></span>
  </button>

  <a href="#home" class="navbar-brand page-scroll">Toekang Ketik</a>
  </div>

  <div class="collapse navbar-collapse" id="bs-example-navbar-collpase-1">
  <ul class="nav navbar-nav navbar-right">
  <li><a href="#about" class="page-scroll">About</a></li>
  <li><a href="#portfolio" class="page-scroll">Portfolio</a></li>
  <li><a href="#contact" class="page-scroll">Contact</a></li>
  </ul>
  </div>
  </div>
</nav>
  <!-- end of navbar -->

    <!-- Header -->
    <div class="jumbotron text-center">
   
    <img src="img/p_2.jpg" class="img-circle">
            <!-- <img src="img/p_2.jpg" style="width: 100px;height: 100px;"> -->
   
    <h1>Husnul Mub</h1>
    <p><u><b>ABAP Programmer | System Analyst | Freelance</b></u></p>
    </div>
    <!-- Akhir Header -->


    <!-- About -->
    <section class="about" id="about">
    <div class="container">
    <div class="row">
    <div class="col-sm-12">
    <h2 class="text-center">About</h2>
    <hr>
    </div>
    </div>

    <div class="row">
    <div class="col-sm-5 col-sm-offset-1">
    <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
    tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
    quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
    consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
    cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
    proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
    </div>
    <div class="col-sm-5">
    <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
    tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
    quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
    consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
    cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
    proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
    </div>
    </div>
    </div>
    </section>
    <!-- End of About -->


    <!-- Pertfolio -->
    <section class="portfolio" id="portfolio">
    <div class="container">
    <div class="row">
    <div class="col-sm-12 text-center">
    <h2>Portfolio</h2>
    <hr>
    </div>
    </div>

    <!-- Images -->
    <div class="row">
    <div class="col-sm-4 text-center">
    <a href="" class="thumbnail">
    <img src="img/portfolio/1.png">
    </a>
    </div>

<div class="col-sm-4 text-center">
    <a href="" class="thumbnail">
    <img src="img/portfolio/2.png">
    </a>
    </div>

    <div class="col-sm-4 text-center">
    <a href="" class="thumbnail">
    <img src="img/portfolio/3.png">
    </a>
    </div>

    <div class="col-sm-4 text-center">
    <a href="" class="thumbnail">
    <img src="img/portfolio/4.png">
    </a>
    </div>

    <div class="col-sm-4 text-center">
    <a href="" class="thumbnail">
    <img src="img/portfolio/5.png">
    </a>
    </div>

    <div class="col-sm-4 text-center">
    <a href="" class="thumbnail">
    <img src="img/portfolio/6.png">
    </a>
    </div>   
    </div>
    </div>
    </section>
    <!-- End of Pertfolio -->


    <!-- Contact -->
    <section class="contact" id="contact">
    <div class="container">
    <div class="row">
    <div class="col-sm-12 text-center">
    <h2>Contact</h2>
    <hr>
    </div>
    </div>

    <!-- Form contact -->
    <div class="row">
    <div class="col-sm-6 col-sm-offset-3">
    <form>
    <div class="form-group">
    <label for="nama">Nama</label>
    <input type="text" id="nama" class="form-control" placeholder="Masukkan Nama">
    </div>

    <div class="form-group">
    <label for="email">Email</label>
    <input type="email" id="email" class="form-control" placeholder="Masukkan Email">
    </div>

    <div class="form-group">
    <label for="telp">No. Telp</label>
    <input type="tel" id="telp" class="form-control" placeholder="Masukkan no telepone">
    </div>

    <div class="form-group">
    <label for="pesan">Pesan</label>
    <textarea class="form-control" rows="8" id="pesan" placeholder="Masukkan pesan"></textarea>
    </div>
   
    <div class="form-group">
    <button type="submit" class="btn btn-primary">Kirim Pesan</button>
    </div>
   
    </form>
    </div>
    </div>
    </div>
    </section>
    <!-- End of Contact -->


    <!-- footer -->
    <footer>
    <div class="container text-center">
    <div class="row">
    <div class="col-sm-12">
    <p>&copy; copyright 2018 | <a href="https://www.facebook.com/toekangketiks/">toekang ketik</a></p>
    </div>
    </div>
    </div>
    </footer>
    <!-- end of footer -->

    <!-- Optional JavaScript -->
    <!-- jQuery first, then Popper.js, then Bootstrap JS -->
    <!-- <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> -->
<script src="js/jquery.js"></script>    
<script src="js/jquery.easing.1.3.js"></script>
    <script src="js/bootstrap.min.js"></script>
    <script src="js/hm.js"></script>
  </body>
</html>

sekian sharing kali ini semoga bermanfaat, yang mau download source code nya bisa DISINI.

Belajar SAP ABAP RAP

  Belajar SAP ABAP RAP: Pengenalan dan Konsep Dasar Restful ABAP Programming Model Kalau kamu seorang ABAPer yang mulai terjun ke dunia SAP...