Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>IndexedDB</title>
- <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
- <link rel="stylesheet" href="http://code.jquery.com/ui/1.12.1/themes/start/jquery-ui.css">
- <script src="http://code.jquery.com/jquery-latest.js"></script>
- <script src="http://code.jquery.com/ui/1.12.1/jquery-ui.min.js"></script>
- <style>
- .add-friend { display: none; }
- </style>
- </head>
- <body>
- <div class="container">
- <div class="jumbotron">
- <h1 class="text-center">My Friends</h1>
- <p class="text-center"><button class="btn-add btn btn-primary">친구추가</button></p>
- </div>
- <div class="add-friend">
- <h2>친구추가</h2>
- <form onsubmit="return false">
- <div class="form-group">
- <input type="text" name="fname" id="fname" class="form-control" placeholder="이름">
- </div>
- <div class="form-group">
- <input type="text" name="femail" id="femail" class="form-control" placeholder="Email">
- </div>
- <div class="form-group">
- <input type="text" name="fphone" id="fphone" class="form-control" placeholder="전화번호">
- </div>
- <div class="form-group">
- <input type="text" name="fschool" id="fschool" class="form-control" placeholder="학교">
- </div>
- <div class="form-group">
- <input type="file" name="fphoto" id="fphoto" class="form-control" placeholder="사진">
- <img id="preview" src="" alt="미리보기이미지" height="100">
- </div>
- <div class="form-group">
- <a href="#!" class="btn-save btn btn-success">친구등록</a>
- </div>
- </form>
- </div>
- <div>
- <table id="flist" class="table">
- <tr class="active">
- <td>사진</td>
- <td>ID</td>
- <td>이름</td>
- <td>Email</td>
- <td>연락처</td>
- <td>학교</td>
- <td>수정/삭제</td>
- </tr>
- </table>
- </div>
- </div>
- <div class="edit-friend" style="display: none;">
- <h2>친구수정</h2>
- <form onsubmit="return false">
- <div class="form-group">
- <input type="hidden" name="fid" id="fid">
- <label for="e-fname">이름</label>
- <input type="text" name="fname" id="e-fname" class="form-control" placeholder="이름">
- </div>
- <div class="form-group">
- <label for="e-femail">Email</label>
- <input type="text" name="femail" id="e-femail" class="form-control" placeholder="Email">
- </div>
- <div class="form-group">
- <label for="e-fphone">전화번호</label>
- <input type="text" name="fphone" id="e-fphone" class="form-control" placeholder="전화번호">
- </div>
- <div class="form-group">
- <label for="e-fschool">학교</label>
- <input type="text" name="fschool" id="e-fschool" class="form-control" placeholder="학교">
- </div>
- <div class="form-group">
- <a href="#!" class="btn-update btn btn-success">친구수정</a>
- </div>
- </form>
- </div>
- <script>
- var db;
- //db "adbook" open(없으면 새로 만들어 줌, ver 1)
- var request = window.indexedDB.open("adbook",1);
- request.onerror = function(event){
- console.log("DB Open Error");
- };
- request.onsuccess = function(event){
- db = request.result;
- readAll();
- };
- request.onupgradeneeded = function(event){
- var result = event.target.result;
- var objStore = result.createObjectStore(
- "address",
- {"keyPath":"id", autoIncrement:true}
- );
- }
- $(".btn-add").on("click",function(){
- $(".add-friend").slideToggle();
- });
- $(".btn-save").on("click",function(e){
- e.preventDefault();//링크 이동 방지
- var friend = {};
- friend.fname = $("#fname").val();
- friend.femail = $("#femail").val();
- friend.fphone = $("#fphone").val();
- friend.fschool = $("#fschool").val();
- friend.fphoto = $("#preview").attr("src");
- if( ! friend.fname || ! friend.femail || ! friend.fphone || ! friend.fschool ) {
- return;
- }
- saveData(friend);
- });
- function saveData(data) {
- var trz = db.transaction(["address"],"readwrite");
- var store = trz.objectStore("address");
- var request = store.add(data);
- request.onsuccess = function(event){
- var id = event.target.result;
- data.id = id;
- addList(data);
- $("#fname").val("");
- $("#femail").val("");
- $("#fphone").val("");
- $("#fschool").val("");
- $("#preview").attr("src","");
- $(".add-friend").slideUp();
- };
- request.onerror = function(event){
- console.log("Error on Save");
- }
- }
- function readAll() {
- var trz = db.transaction(["address"]);
- var store = trz.objectStore("address");
- store.openCursor().onsuccess = function(event){
- var cursor = event.target.result;
- if( cursor ) {
- addList(cursor.value);
- cursor.continue();
- }
- }
- }
- function addList(data) {
- if( ! data ) return;
- var row = "<tr id='friend-" + data.id + "'>";
- row += "<td class='data-fphoto'>";
- row += "<img src='" + data.fphoto + "' width='50' alt=''>";
- row += "</td>";
- row += "<td class='data-id'>" + data.id + "</td>";
- row += "<td class='data-fname'>" + data.fname + "</td>";
- row += "<td class='data-femail'>" + data.femail + "</td>";
- row += "<td class='data-fphone'>" + data.fphone + "</td>";
- row += "<td class='data-fschool'>" + data.fschool + "</td>";
- row += "<td>";
- row += "<a href='" + data.id + "' class='btn-edit btn btn-warning btn-sm'>수정</a>";
- row += " <a href='" + data.id + "' class='btn-delete btn btn-danger btn-sm'>삭제</a>";
- row += "</td>";
- row += "</tr>";
- $("#flist tr:last").after(row);
- }
- $("#flist").on("click",".btn-delete",function(e){
- e.preventDefault();
- var id = $(this).attr("href");
- if( ! id ) return;
- deleteRecord(id);
- });
- function deleteRecord(id) {
- if( ! id ) return false;
- var id = parseInt(id,10);
- var trz = db.transaction(["address"],"readwrite");
- var objectStore = trz.objectStore("address");
- var request = objectStore.delete(id);
- request.onsuccess = function(event){
- $("#friend-" + id).remove();
- };
- request.onerror = function(event){
- alert("삭제실패");
- };
- }
- $("#flist").on("click",".btn-edit",function(e){
- e.preventDefault();
- var id = $(this).attr("href");
- if( ! id ) return;
- editRecord(id);
- });
- function editRecord(id){
- if( ! id ) return;
- id = parseInt(id,10);
- var trz = db.transaction(["address"]);
- var objectStore = trz.objectStore("address");
- var request = objectStore.get(id);
- request.onsuccess = function(event){
- var data = request.result;
- if( ! data ) return;
- $("#fid").val(data.id);
- $("#e-fname").val(data.fname);
- $("#e-femail").val(data.femail);
- $("#e-fphone").val(data.fphone);
- $("#e-fschool").val(data.fschool);
- $(".edit-friend").dialog({
- title: "친구수정",
- width: 500,
- height: 500,
- modal: true
- });
- };
- request.onerror = function(event){
- console.log("read error");
- };
- }
- $(".btn-update").on("click", function(){
- var data = {};
- var id = $("#fid").val();
- if( ! id ) return;
- id = parseInt(id, 10);
- data.fname = $("#e-fname").val();
- data.femail = $("#e-femail").val();
- data.fphone = $("#e-fphone").val();
- data.fschool = $("#e-fschool").val();
- if( ! data.fname || ! data.femail || ! data.fphone || ! data.fschool ) {
- alert("필수 입력 사항이 빠졌습니다.");
- return;
- }
- var trz = db.transaction(["address"], "readwrite");
- var objectStore = trz.objectStore("address");
- var request = objectStore.get(id);
- request.onsuccess = function(event){
- var dbdata = event.target.result;
- dbdata.fname = data.fname;
- dbdata.femail = data.femail;
- dbdata.fphone = data.fphone;
- dbdata.fschool = data.fschool;
- var dbupdate = objectStore.put(dbdata);
- dbupdate.onsuccess = function(event){
- $("#friend-" + id).children("td.data-fname").text(data.fname);
- $("#friend-" + id).children("td.data-femail").text(data.femail);
- $("#friend-" + id).children("td.data-fphone").text(data.fphone);
- $("#friend-" + id).children("td.data-fschool").text(data.fschool);
- $(".edit-friend").dialog("close");
- };
- dbupdate.onerror = function(event){
- console.log('데이터 수정 실패');
- };
- };
- request.onerror = function(event){
- console.log('데이터 수정 실패');
- }
- });
- $("#fphoto").change(function(){
- photoView(this);
- });
- function photoView(photo) {
- if( ! photo.files ) return;
- if( ! photo.files[0] ) return;
- var reader = new FileReader();
- reader.onload = function(event){
- var src = event.target.result;
- $("#preview").attr("src", src);
- };
- reader.readAsDataURL(photo.files[0]);
- }
- </script>
- </body>
- </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement