Kamis, 22 Juli 2021

5. Membuat Server dengan Node JS dan MYSQL

 





    Hai sobat musafir, bertemu lagi dengan blog musafir coding. Kali ini saya akan melanjutkan tutorial yang berhubungan dengan angular, yaitu bagaimana cara membuat server dengan node js dan mysql. Jadi nanti untuk backend nya kita menggunakan node js dan database nya menggunakan mysql. Kemudian, dari backend ini kita akan ambil data nya untuk ditampilkan di frontend kita yaitu menggunakan angular. Sebelum melanjutkan tutorial ini, bagi kalian yang belum mengikuti tutorial sebelum ini silahkan kunjungi url disini. Karena disitu ada daftar isi tutorial yang harus kalian ikuti step by step nya. Tanpa basa basi mari kita lanjuuut..


1. Membuat Koneksi Database Node Js ke Mysql

    Sebelum membuat koneksi, kalian harus sudah menginstall node js di komputer kalian. saya anggap kalian sudah menginstalnya karena sudah mengikuti tutorial angular dari awal. Setelah itu kalian install modul mysql nya ke dalam directory/folder dimana kalian akan membuat aplikasi node js nya. Pada tutorial kali ini saya akan meletakkan aplikasi node js nya ke dalam folder LATIHAN NODE JS/db_mysql. Untuk cara installnya adalah melalui terminal/command promp. Pastekan kode dibawah ini :

npm install mysql

tampilanya kurang lebih seperti ini:







tampilanya seperti itu karena saya sudah pernah install.

Kemudian kalian install module express, agar kita dapat menampilkan data nya ke dalam browser. Caranya pastekan kode ini ke dalam terminal kalian:

npm install express --save

Selanjutnya kita buat database nya di mysql. Saya buat nama databasenya db_nodejs, kemudian buat table dengan nama staff yang isi field nya adalah :

id (int) primary_key

nama (varchar) 100

alamat (varchar) 100

email (varchar) 50

username (varchar) 20

password (varchar) 100

Setelah itu, buatlah file bernama index.js yang diletakkan di folder LATIHAN NODE JS/db_mysql seperti proses install modul mysql diatas. Kemudian pastekan kode dibawah ini :

var mysql = require('mysql');

//koneksi ke database mysql
var db = mysql.createConnection({
    host: "127.0.0.1",
    user: "db_nodejs",
    password: "db_nodejs123",
    database: "db_nodejs"
});

db.connect(function(err) {
    if (err) throw err;
    console.log("Connected!");
});

Perhatikan pada user,password dan database. Kalian sesuaikan dengan xampp atau wamp kalian. biasanya setting defaultnya adalah user : root dan password : kosong (diisi -> ""). Jika koneksi berhasil, maka akan tampil connected! pada terminal kalian. Coba kita jalankan dengan cara :

node index.js

Tampilanya akan seperti ini :






2. Membuat Method GET (Tampil Data)

    Selanjutnya kita tambahkan kode untuk menampilkan data dari database. Tambahkan kode dibawah ini ke dalam file index.js :

//tampil data
app.get("/staff", async (req, res) => {
	try{
		let sql = "SELECT * FROM staff";
		db.query(sql, function (err, result) {
			if (err) throw err;
			res.status(200).json(result);
		});
	} catch (err) {
		throw err;
	}
	
});

kode di atas akan menampilkan data jika url aksesnya adalah staff dan method nya get.

Kemudian kita tambahkan module express agar bisa ditampilkan di dalam browser. Kita juga tambahkan coding untuk mengizinkan CORS agar tidak di block oleh browser saat nanti diakses oleh frontend. Silahkan tambahkan kode dibawah ini ke dalam file index.js :

const express = require("express");
const bodyParser = require('body-parser');
const app = express();

app.use(bodyParser.json());
app.use(function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "*"); // update to match the domain you will make the request from
  res.header("Access-Control-Allow-Methods", "GET,POST,PUT,DELETE,OPTIONS");
  res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization");
  next();
});

app.listen(8002, () => {
  console.log(`Server is running port 8002.`);
});

Tambahkan kode tersebut di atas koneksi. Simpan file index.js nya kemudian jalankan lagi di terminal dengan kode node index.js. Tampilanya akan seperti ini :






Untuk mengetes tampilan data di browser, coba kalian tambahkan data pada databasenya secara manual di xampp. Contohnya seperti ini :






Kemudian buka pada browser dengan url localhost:8002/staff. jika tidak ada error maka tampilan di browser akan seperti ini :


Jika sudah tampil seperti diatas, maka server untuk method GET sudah berhasil dibuat.


3. Membuat Method POST (Insert Data)
    Langkah selanjutnya adalah membuat method POST untuk menambah data ke dalam database mysql. untuk kode nya silahkan pastekan dibawah ini ke dalam file index.js kalian:

//insert data ke database
app.post("/staff", async (req, res)=>{
	try{
		const {nama, alamat, email, username, password} =req.body;
		let sql ="INSERT INTO staff (nama, alamat, email, username, password) VALUES ?";
		var values = [
                                [nama, alamat, email, username, password]
                             ];
		
		db.query(sql, [values], function (err, result) {
			if (err) throw err;
			res.send(req.body);
		});		
	} catch (err){
		console.error(err.message);
	} 
});

kode diatas untuk proses insert data ke dalam database mysql. data di dapat dari req.body yang dikirim oleh frontend. Untuk mengecek apakah coding kita sudah berfungsi, kita bisa menggunakan aplikasi postman. Sebelumnya kita simpan dulu perubahan kode nya kemudian kita jalankan ulang aplikasinya lewat terminal dengan kode node index.js. Jika sudah running maka kita bisa cek di postman dengan cara seperti dibawah ini :















Tampilan diatas adalah contoh jika proses penyimpanan berhasil. Kita bisa cek di database kita maka akan bertambah datanya :








Method POST sudah berjalan dengan baik dan bisa digunakan oleh frontend nantinya.


4. Membuat Method GET by id (Tampil Data by id)

    Langkah berikutnya kita akan membuat method GET by id, yaitu menampilkan data berdasarkan id yang di masukkan oleh frontend. Gunanya nanti untuk keperluan edit data. Langsung saja tambahkan kode dibawah ini ke dalam file index.js :

//tampil data berdasarakan id
app.get("/staff/:id", async (req, res) => {
	const {id} =req.params;
    try{
        let sql = "SELECT * FROM staff WHERE id=?";
		let data = [
			[id]
		];
		db.query(sql, [data], function (err, result) {
			if (err) throw err;
			res.status(200).json(result);
		});
    } catch (err) {
        throw err;
    }
});

Jika sudah ditambahkan, kita simpan perubahan kode nya kemudian kita running ulang aplikasi node js kita dengan cara ketik node index.js pada terminal. Setelah berhasil running, sekarang kita cek menggunakan postman apakah berhasil menampilkan data. Tampilanya akan seperti ini :














Kita juga bisa cek di browser dengan url localhost:8002/staff/2, maka tampilanya akan seperti ini :






Browser akan menampilkan data dengan id= 2.

Jika sudah tampil seperti ini maka method GET by id sudah berhasil dibuat.


5. Membuat Method PUT (Update Data)

    Berikutnya kita membuat method PUT untuk keperluan Update data ke database. Pada method ini kita memerlukan data sebagai perubahan/edit dan parameter id sebagai acuan data mana yang akan di edit. Untuk kode nya silahkan tambahkan dibawah ini ke dalam file index.js kalian :

//Update data ke database
app.put("/staff/:id", async (req, res)=>{
	try{
		const {id} =req.params;
		const {nama, alamat, email, username, password} =req.body;
		
		let sql = "UPDATE staff SET nama=?, alamat=?, email=?, username=?, password=? WHERE id=?";
		let data =[nama, alamat, email, username, password, id];
		db.query(sql, data, function (err, result) {
			if (err) throw err;
			res.json('Update success');
		});	
	} catch (err){
		throw err;
	}
});

Jika sudah ditambahkan silahkan di simpan kemudian jalankan lagi aplikasi node js nya lewat terminal dengan kode node index.js. Jika sudah running kita cek menggunakan postman. Caranya sebagai berikut :

























Jika tampil Update success maka proses update sudah berhasil, kita bisa cek di database kita maka tampilanya menjadi seperti ini:












6. Membuat Method DELETE (Hapus Data)
    Selanjutnya kita membuat method DELETE untuk proses hapus data dari database berdasarkan parameter id yang di sertakan oleh frontend. Silahkan tambahkan kode dibawah ini ke dalam file index.js :
//Hapus data dari database
app.delete("/staff/:id", async (req, res)=>{
	try{
		const {id} =req.params;
		
		let sql = "DELETE FROM staff WHERE id=?";
		db.query(sql, id, function (err, result) {
			if (err) throw err;
			res.json('Delete success');
		});	
	} catch (err){
		throw err;
	}
});

Jika sudah silahkan simpan dan running ulang aplikasinya dengan cara node index.js di dalam terminal. Jika sudah running kita bisa cek dengan postman, caranya adalah sebagai berikut :





















Pada postman kita menghapus data dengan id = 2, jika berhasil maka akan muncul Delete success. Kita bisa cek di database bahwa data dengan id =2 sudah hilang. Tampilanya seperti ini :











Server kita sudah lengkap dan siap untuk digunakan oleh frontend. Dalam tutorial selanjutnya kita akan mencoba menghubungkan frontend atau angular kita ke backend node js ini.

Untuk tutorial kali ini cukup sekian dan tunggu tutorial berikutnya..

#angular #nodejs #server #database


Senin, 19 Juli 2021

4. Membuat Sidebar Menu dengan Syncfusion di Angular 12

 


    Hai Sobat Musafir, kali ini saya akan share tutorial bagaimana membuat sidebar menu dengan syncfusion di angular. Pada tutorial sebelumnya saya sudah share tutorial bagaimana cara Membuat form Login dan Registrasi dengan Syncfusion di Angular. Jika belum mengikuti, silahkan ikuti tutorialnya dari awal karena akan saling berkaitan. Untuk daftar tutorialnya bisa lihat disini.


Cara Membuat Sidebar Menu di Angular
    Untuk membuat sidebar menu dengan syncfusion di angular silahkan kalian ikuti tahapannya di bawah ini:

1. Instalasi Tools Syncfusion Navigations

    Pertama-tama kalian harus instal tools/module navigations dari syncfusion. Untuk dokumentasinya bisa kalian kunjungi di web nya disini. cara instalasinya adalah dengan kode berikut, kalian pastekan ke dalam terminal kalian. Sebelumnya kalian harus masuk ke folder aplikasi kalian.

npm install @syncfusion/ej2-angular-navigations --save

Tunggu hingga proses instalasinya selesai.

Setelah selesai, kalian pastekan kode dibawah ini ke dalam file styles.scss

@import '../node_modules/@syncfusion/ej2-angular-navigations/styles/material.css';

gunanya untuk memanggil style class bawaan syncfusion agar bisa digunakan.


2. Buat Module admin dan Component (menu dan dashboard)

    Langkah kedua kalian buat module admin di aplikasi angular kalian. Gunanya untuk memisahkan antara module app dengan module admin. Nantinya sidebar menu dan tampilan aplikasi yang lain akan masuk ke dalam module admin. Sementara untuk modul app hanya untuk menangani form login dan registrasi saja. Untuk membuat module admin caranya adalah sebagai berikut:

ng generate module admin

Setelah membuat module admin, kalian buatlah component menu dan dashboard. Gunanya untuk membuat kode sidebar menu dan tampilan awal dashboard. caranya adalah sebagai berikut :

ng generate component admin/menu
ng generate component admin/dashboard

component menu dan dashboard berada di dalam folder admin. tampilan struktur file nya akan menjadi seperti ini :











3. Import Module dan Membuat Routing di admin.module.ts

    Langkah ketiga kalian import beberapa modul dari syncfusion ke dalam file admin.module.ts agar tools syncfusion dapat digunakan. Kemudian kalian juga harus membuat routing di dalam admin.module.ts. Gunanya untuk membuat rute link di dalam browser. Untuk tampilan kode nya seperti ini, silahkan kalian pastekan semua kode nya:

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { MenuComponent } from './menu/menu.component';
import { DashboardComponent } from './dashboard/dashboard.component';
import { MenuAllModule, SidebarAllModule } from '@syncfusion/ej2-angular-navigations';
import { RouterModule, Routes } from '@angular/router';

const routes: Routes = [
  {
    path:'',
    component: MenuComponent,
    children:[
      {
        path:'',
        redirectTo:'dashboard',
        pathMatch:'full'
      },
      {
        path:'dashboard',
        component:DashboardComponent
      }
    ]
  }
];

@NgModule({
  declarations: [
    MenuComponent,
    DashboardComponent
  ],
  imports: [
    RouterModule.forChild(routes),
    CommonModule,
    SidebarAllModule,
    MenuAllModule,
    RouterModule
  ]
})
export class AdminModule { }


4. Membuat Tampilan Sidebar Menu di menu.component.html

    Langkah berikutnya kalian pastekan source code ini ke dalam file menu.component.html. Gunanya untuk menampilkan layout sidebar menu.

<div class="control-section">
	<div class="col-lg-12 col-sm-12 col-md-12" id="sidebar-section">
		<div id="wrapper">
            <div class="header-section dock-menu" id="header">
                <ul class="header-list">
                    <li id="hamburger" class="icon-menu icon list" (click)="openClick()"></li>
                    <li class="left-header list">
                        ANGULAR SYSTEM WITH SYNCFUSION
                    </li>
                    <li class="right-header list">
                        <div class="horizontal-menu">
                            <!-- Menu element declaration -->
                            <ejs-menu [items]='AccountMenuItem' cssClass='dock-menu'></ejs-menu>
                        </div>
                    </li>
                </ul>
            </div>
            <!--end of header-section  declaration -->
            <!-- sidebar element declaration -->
            <ejs-sidebar id="sidebar-menu" class="dock-menu" #sidebarMenuInstance  [width]='width'
                [dockSize]='dockSize' [mediaQuery]='mediaQuery' [target]='target' >
                <div class="main-menu">
                    <p class="main-menu-header">MAIN</p>
                    <!-- Menu element declaration -->
                    <ejs-menu [items]='menuItems' orientation='Vertical' cssClass='dock-menu' [animationSettings]='animationSettings'>
                        <ng-template #template let-menuItems=""> 
                            <div *ngIf="menuItems.text" routerLink="{{menuItems.url}}" style="width:100%;display:flex;justify-content:space-between;">
                                <span class="{{menuItems.iconCss}}"></span>
                                <span class="navRes" style="width:100%;">
                                    <a style="display:block" class="e-menu-text e-menu-url" style="color:white; margin-left:10px;"> 
                                        {{ menuItems.text }} 
                                    </a> 
                                </span>
                            </div>
                        </ng-template> 
                    </ejs-menu>
                </div>
            </ejs-sidebar>

            <div class="main-content" id="maintext">
                <div class="sidebar-menu-content">
                    <router-outlet></router-outlet>
                </div>
            </div>
            <div></div>
        </div>
    </div>
</div>


5. Membuat CSS di menu.component.scss

    Langkah berikutnya pastekan kode css ini ke dalam file menu.component.scss agar tampilan sidebar menjadi lebih bagus.

/* header-section styles */

#header.header-section,
#header .search-icon {
    height: 63px;
}

#header #hamburger.icon-menu {
    font-size: 24px;
    float: left;
    line-height: 50px;
}

#header .left-header {
    height: 50px;
    padding: 7px;
    float: left;
    font-family: Verdana, Geneva, Tahoma, sans-serif;
    font-weight: bold;
}

#header .right-header {
    height: 50px;
    padding: 7px;
    float: right;
}

#header .list {
    list-style: none;
    cursor: pointer;
    font-size: 16px;
    line-height: 35px;
}

#header .header-list {
    padding-left: 1px;
    margin: 0;
}

@media(max-width:500px) {
	 #header .right-header.list.support,
     #header .right-header.list.tour {
         display: none;
     }
 }

/* text input styles */
#header .search-icon {
    float: left;
    padding-left: 15px;
    border: 0px solid #33383e !important;
    background-color: #33383e;
    cursor: text;
    width: 5em;
}

#header .search-icon:focus {
    outline: none;
    cursor: default;
}

/* end of text input styles */
/* end of header-section styles */


/* menu styles */
/* horizontal-menu styles */
#header .header-list .horizontal-menu .e-menu-item {
    height: 35px;
    vertical-align: middle;
    font-size: 16px;
    line-height: 35px;
}

#header .e-menu-item .e-caret {
    line-height: 35px;
}

/* end of horizontal-menu styles */
/* vertical-menu styles */

#sidebar-menu .e-menu-wrapper ul .e-menu-item.e-menu-caret-icon {
    width: 210px;
}

@media(max-width: 500px) {

    #header .right-header.list.support,
    #header .right-header.list.tour {
        display: none;
    }
 }

#sidebar-menu .e-menu-wrapper ul .e-menu-item:hover,
.e-menu-item.e-focused:hover {
    background-color: #9ca707 !important;
}

/* end of vertical-menu styles */
/* end of menu styles */

/* Sidebar styles */
/* docksidebar styles */
.dock-menu .e-menu-wrapper ul .e-menu-item .e-caret,
#header .search-icon,
#sidebar-menu .action-btn,
#header .e-menu-item .e-caret,
.dock-menu .e-menu-wrapper ul .e-menu-item {
    color: #fff !important;

}

.dock-menu.e-close .e-menu-wrapper ul .e-menu-item {
    width: 50px;
}

.dock-menu.e-close ul .e-menu-item.e-menu-caret-icon {
    padding-right: 12px;
}

#sidebar-menu.e-dock.e-close .e-menu-wrapper ul .e-menu-item .e-caret,
#sidebar-menu.e-dock.e-close .main-menu-header,
#sidebar-menu.e-dock.e-close .action-btn {
    display: none;
}

#sidebar-menu.e-dock.e-close .e-menu-wrapper ul .e-menu-item.e-menu-caret-icon,
#sidebar-menu.e-dock.e-close .e-menu-wrapper ul.e-vertical {
    min-width: 0;
    width: 50px !important;
}

#sidebar-menu.e-dock.e-close .e-menu-wrapper ul.e-menu {
    font-size: 0px;
}

#sidebar-menu.e-dock.e-close .e-menu-item .e-menu-icon {
    font-size: 20px;
    padding: 0;
}

#sidebar-menu,
#sidebar-menu ul,
#header ul,
.dock-menu .e-menu-wrapper,
.dock-menu.e-menu-wrapper,
.dock-menu.e-menu-wrapper ul>*,
.dock-menu .e-menu-wrapper ul>* {
    background-color: #5650b1 !important;
    color: #fff !important;
    overflow: hidden;
}

#sidebar-menu {
    position: fixed;
    margin-top: 63px;
    margin-left: -1px;
    overflow-y: auto;
}

/* end of docksidebar styles */
/*end of  Sidebar styles */

/*main-menu-header  styles */
#sidebar-menu .main-menu-header {
    padding: 4px 0 0 18px;
    color: #cfd2d4;
    background-color: #054894;
    margin-top: 0px;
    height: auto;
}

#sidebar-menu .main-menu {
    margin-bottom: 100px;
}

/*end of main-menu-header  styles */

/*button styles */
#sidebar-menu .action-btn {
    margin-left: 16px;
    width: 165px;
    height: 30px;
    font-size: 13px;
    border-radius: 5px;
}

#sidebar-menu .action-btn {
    background-color: #1784c7;
}
/* custom code start */
/*end of button styles */
.sb-content-tab #wrapper {
    display: none;
}

.center {
    text-align: center;
    display: none;
    font-size: 13px;
    font-weight: 400;
    margin-top: 20px;
}

.sb-content-tab .center {
    display: block;
}

/*body styles */
body {
    margin: 0;
    overflow-y: hidden;
    font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
    -webkit-tap-highlight-color: transparent;
}
/* custom code end */
/*end of body styles */

/* newTab support styles */

.ej2-new .sb-header,
.ej2-new .sb-bread-crumb,
.ej2-new #action-description,
.ej2-new #description-section,
.ej2-new #description,
.ej2-new .action {
    display: none
}

.ej2-new .control-section{
	padding-left: 0px;
}

.ej2-new app-root > div:first-child{
	padding-left: 0px !important;
}

.ej2-new .container-fluid,
.ej2-new .container-fluid .control-section,
#sidebar-section {
    padding: 0;
}

.ej2-new .sample-browser>.content.e-view {
    top: 0;
    padding: 0;
    height: 100%;
    overflow: hidden;
    text-align: initial
}

/* end of newTab support styles */

/*icon styles */
@font-face {
    font-family: 'fontello';
    src:url('data:application/octet-stream;base64,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') format('truetype');
}

#sidebar-menu .icon-up-hand:before {
    content: '\e801';
}

#sidebar-menu .icon-bell-alt:before {
    content: '\e802';
}

#sidebar-menu .icon-user:before {
    content: '\e803';
}

#sidebar-menu .icon-picture:before {
    content: '\e804';
}

#sidebar-menu .icon-account-circle:before {
    content: '\e803';
}

#sidebar-menu .icon-comment-alt:before {
    content: '\e805';
}

#sidebar-menu .icon-tag:before {
    content: '\e806';
}

#sidebar-menu .icon-comment-inv-alt2:before {
    content: '\e807';
}

#sidebar-menu .icon-eye:before {
    content: '\e808';
}

#sidebar-menu .icon-globe:before {
    content: '\e809';
}

#sidebar-menu .icon-bookmark-empty:before {
    content: '\e810';
}

#sidebar-menu .icon-bookmark:before {
    content: '\e811';
}

#header .icon-menu:before {
    content: '\e812';
}

#sidebar-menu .icon,
#header #hamburger.icon-menu {
    font-family: 'fontello';
}

#sidebar-menu .e-menu-icon::before {
    color: #656a70;
}

/*icon styles */


.content {
    align-content: center;
    padding: 10px;
  }
  
  .sub-title {
    text-align: center;
    font-size: 16px;
    padding: 10px;
  }

#maintext.main-content {
    height: 100vh;
    z-index: 1000;
    margin-left: 10px;
    margin-right: 10px;
}

#maintext .sidebar-menu-content {
    margin-top: 10px;
    text-align: left;
    margin-bottom: 100px;
}


6. Membuat Source Code Typescript di menu.component.ts

    Selanjutnya kalian pastekan kode dibawah ini ke dalam file menu.component.ts.

import { Component, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';
import { MenuAnimationSettingsModel, MenuItemModel, SidebarComponent } from '@syncfusion/ej2-angular-navigations';

@Component({
  selector: 'app-menu',
  templateUrl: './menu.component.html',
  styleUrls: ['./menu.component.scss'],
  encapsulation: ViewEncapsulation.None
})
export class MenuComponent {
    @ViewChild('sidebarMenuInstance')
    public sidebarMenuInstance!: SidebarComponent;
    public width: string = '220px';
    public mediaQuery: string = ('(min-width: 600px)');
    public target: string = '.main-content';
    public dockSize: string = '50px';
    public enableDock: boolean = true;
    public animationSettings: MenuAnimationSettingsModel = {
        effect: 'SlideDown',
        duration: 1000
    }

    public menuItems: MenuItemModel[] = [
        {
            text: 'Dashboard',
            iconCss: 'icon-globe icon',
            url: '/admin'
        },
        {
            text: 'Example',
            iconCss: 'icon-bell-alt icon',
            url: '#',
            items: [
                { text: 'Message', url: '#' },
                { text: 'Facebook', url: '#' },
                { text: 'Twitter', url: '#' }
            ]
        },
    ];
     public AccountMenuItem: MenuItemModel[] = [
        {
            text: 'Account',
            items: [
                { text: 'Profile' },
                { text: 'Sign out', url:'/login' },
            ]
        }
    ];
    // open new tab
    newTabClick(): void {
        let URL = location.href.replace(location.search,'');
    }

    openClick() {
        this.sidebarMenuInstance.toggle();
    }

}


7. Membuat Tampilan Dashboard di dashboard.component.html

    Langkah terakhir kalian buat tampilan menu dashboardnya dengan kode berikut ini.

<div tabindex="0" class="e-card" id="basic" >
    <div class="e-card-header" style="width:100%;">
        <div class="e-card-header-caption">
            <div class="e-card-title">
                <h1 style="color:blue; font-weight: bold;">
                Welcome to Angular System
                </h1>
            </div>
        </div>
    </div>
</div>



8. Menambah Routing di file app-routing.module.ts

    Menambah routing pada file app-routing.module.ts agar bisa redirect ke modul admin. Untuk source code nya akan menjadi seperti ini :

import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { LoginComponent } from './auth/login/login.component';
import { RegistrasiComponent } from './auth/registrasi/registrasi.component';

const routes: Routes = [
  {
    path :'',
    redirectTo: '/login',
    pathMatch: 'full'
  },
  {
    path :'login',
    component :LoginComponent
  },
  {
    path :'registrasi',
    component :RegistrasiComponent
  },
  {
    path: 'admin',
    loadChildren: () => import('./admin/admin.module').then(mod => mod.AdminModule),
  }
];

@NgModule({
  imports: [RouterModule.forRoot(routes)],
  exports: [RouterModule]
})
export class AppRoutingModule { }



silahkan tambahkan baris code yang berwarna kuning..



simpan semua perubahan file nya. buka browser dengan url localhost:4200/admin.

Jika berhasil tampilanya akan seperti ini dibrowser



Cukup sekian tutorial kali ini. tetap semangat belajar dan sampai jumpa di tutorial berikutnya..


#angular #syncfusion #sidebar #navigations

Minggu, 18 Juli 2021

3. Membuat Form Login dan Registrasi dengan Syncfusion di Angular 12

 


    Hai sobat musafir, kali ini saya akan share bagaimana caranya membuat form login dan registrasi dengan menggunakan syncfusion di angular. Pada postingan sebelumnya saya sudah share bagaimana Menambah Component dan Mengatur Routing di Angular . Silahkan yang belum mengikuti langsung saja simak dan ikuti, karena tutorial ini saling berkaitan.

Cara Membuat Form Login
    Sebelum membuat form login, ada beberapa tools yang harus di install dulu dari syncfusion. Diantaranya adalah tools layout, button dan inputs. Untuk penjelasan dokumentasinya kalian bisa kunjungi web resminya syncfusion untuk angular di sini. Oke langsung saja kita lakukan step by step.

1. Install Layout, Button dan Inputs dari Syncfusion
    Cara installnya adalah lewat terminal atau command promp. sebelumnya kalian harus masuk ke folder aplikasi kalian dulu. Pada tutorial ini nama aplikasinya adalah project-angular1. Silahkan pastekan kode-kode ini di terminal kalian:

npm install @syncfusion/ej2-layouts --save
npm install @syncfusion/ej2-angular-buttons --save
npm install @syncfusion/ej2-angular-inputs --save

Setelah selesai proses downloadnya, silahkan kalian pastekan import CSS dibawah ini ke dalam file styles.scss :

@import '../node_modules/@syncfusion/ej2-base/styles/material.css';  
@import '../node_modules/@syncfusion/ej2-layouts/styles/material.css'
@import "../node_modules/@syncfusion/ej2-buttons/styles/material.css";
@import '../node_modules/@syncfusion/ej2-inputs/styles/material.css';
@import '../node_modules/@syncfusion/ej2-angular-inputs/styles/material.css';

import CSS diatas berguna untuk memanggil style pada class yang sudah di buat oleh syncfusion. Berguna untuk mempermudah kita dalam menghias tampilan html nya.


2. Import Module ke app.module.ts

    Setelah selesai proses installnya, kita harus import tools nya ke dalam file app.module.ts. untuk tampilanya jadi seperti ini :











Fokus pada kotak merah. Jadi kalian harus mengimport module tersebut pada app.module.ts agar tools button,inputs,layout bisa di pakai di file login.


3. Membuat Source Code di file login.component.html

    Sekarang giliran kita membuat form nya di login.component.html. Silahkan pastekan kode di bawah ini :

<div tabindex="0" class="e-card" id="basic" 
style="width:30%; margin: 250px auto; margin-top: 120px;">
    <div class="e-card-header" 
        style="background-color: cyan; width:100%; 
        text-align: center; font-weight: bold;">
        <div class="e-card-header-caption">
            <div class="e-card-title">LOGIN</div>
        </div>
    </div>
    <div class="e-card-content">
        <label>Username</label><br>
        <input class="e-input" floatLabelType="Auto" 
        placeholder="Username" type="text" 
        [(ngModel)]="username" ngDefaultControl><br><br>

        <label>Password</label><br>
        <input class="e-input" floatLabelType="Auto" 
        placeholder="Password" type="password" 
        [(ngModel)]="password" ngDefaultControl><br><br>

        <button ejs-button cssClass="e-success" routerLink="/registrasi">
            Create Account</button>
        <button ejs-button cssClass="e-info" style="float:right;">
            Login</button>
    </div>
</div>

Kode di atas untuk menampilkan form login ke dalam browser.


4. Mendefinisikan ngModel di file login.component.ts

    Setelah membuat form nya, kita harus mendefinisikan ngModel nya di dalam file login.component.ts agar dapat di panggil di file html nya. tampilanya seperti dibawah ini :










Cara Membuat Form Registrasi

    Karena kita sudah melakukan instalasi tools button dan lain-lain, maka kita tinggal membuat formnya saja.

1. Membuat Source Code Form Registrasi di file registrasi.component.html

    Silahkan pastekan kode dibawah ini pada file registrasi.component.html:

<div tabindex="0" class="e-card" id="basic" 
style="width:30%; margin: 250px auto; margin-top: 120px;">
    <div class="e-card-header" 
    style="background-color: cyan; width:100%; 
    text-align: center; font-weight: bold;">
        <div class="e-card-header-caption">
            <div class="e-card-title">REGISTRASI</div>
        </div>
    </div>
    <div class="e-card-content">
        <label>Nama</label><br>
        <input class="e-input" floatLabelType="Auto" 
        placeholder="Nama Lengkap" type="text" 
        [(ngModel)]="nama" ngDefaultControl><br><br>

        <label>Alamat</label><br>
        <input class="e-input" floatLabelType="Auto" 
        placeholder="alamat" type="text" 
        [(ngModel)]="alamat" ngDefaultControl><br><br>

        <label>Username</label><br>
        <input class="e-input" floatLabelType="Auto" 
        placeholder="Username" type="text" 
        [(ngModel)]="username" ngDefaultControl><br><br>

        <label>Password</label><br>
        <input class="e-input" floatLabelType="Auto" 
        placeholder="Password" type="password" 
        [(ngModel)]="password" ngDefaultControl><br><br>

        <button ejs-button cssClass="e-success" routerLink="/login">Sign In</button>
        <button ejs-button cssClass="e-info" style="float:right;">Register</button>
    </div>
</div>


2. Mendefinisikan ngModel ke dalam file registrasi.component.ts

    Jangan lupa untuk mendefinisikan ngModel ke dalam file registrasi.component.ts agar tidak error. tampilanya seperti dibawah ini :









Jika sudah, simpan semua perubahan source code nya. kemudian jalankan di browser dengan url localhost:4200/login. jika berhasil maka tampilanya akan seperti ini :


Untuk tampilan registrasi akan jadi seperti ini :



Oke, untuk tutorial kali ini sampai disini dulu. Tunggu tutorial berikutnya yaa...
#angular #login #registrasi #syncfusion

5. Membuat Server dengan Node JS dan MYSQL

      Hai sobat musafir, bertemu lagi dengan blog musafir coding. Kali ini saya akan melanjutkan tutorial yang berhubungan dengan angular, y...