Advertisement
firmansmoh

Admin.js

Dec 20th, 2019
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <template>
  2.     <div class="container">
  3.         <div class="search-box">
  4.     <input class="search" type="text" v-model="search" placeholder="Search here">
  5.             <input type="submit" value="Cari" class="input-submit">
  6.  
  7.         </div>
  8.     <table border="1px solid black" class="table" cellpadding="0" cellspacing="0">
  9.         <thead>
  10.         <th>
  11.             nama
  12.         </th>
  13.  
  14.         <th>
  15.             email
  16.         </th>
  17.  
  18.         <th>
  19.             feedback
  20.         </th>
  21.  
  22.         <th>
  23.             actions
  24.         </th>
  25.         </thead>
  26.  
  27.         <tr v-for="(feed,key) of AllFeedback" :key="key">
  28.             <td>{{feed.nama}} </td>
  29.             <td>{{feed.email}}</td>
  30.             <td>{{feed.feedback}}</td>
  31.             <td>
  32.                 <button class="btn-edit" @click="editData(feed.id,feed.nama,feed.email,feed.feedback)">edit</button>
  33.                 <button class="btn-delete">delete</button>
  34.             </td>
  35.         </tr>
  36.     </table>
  37.  
  38.         <div class="update" v-if="isEdit == true">
  39.     <h3>edit data {{this.feedback}}</h3>
  40.             <form @submit.prevent="updateData()" ref="formData">
  41.             nama <input type="text" v-model="nama">
  42.                 email <input type="text" v-model="email">
  43.                 feedback <input type="text" v-model="feedback">
  44.             <input type="submit" value="submit">
  45.             </form>
  46.         </div>
  47.     </div>
  48. </template>
  49.  
  50. <script>
  51.     export default {
  52.         name: "Admin",
  53.         data(){
  54.             return{
  55.                 AllFeedback :[],
  56.                 search :'',
  57.                 isEdit :true,
  58.                 nama : '',
  59.                 email : '',
  60.                 feedback : '',
  61.                 id : '',
  62.  
  63.             }
  64.         },
  65.         methods:{
  66.             sendHttpRequest : function(method,url,data) {
  67.                 const promise = new Promise((resolve) => {
  68.                     const xhr = new XMLHttpRequest();
  69.                     xhr.open(method,url);
  70.  
  71.                     xhr.onload = () => {
  72.                         let data = JSON.parse(xhr.response);
  73.                         resolve(data);
  74.                     }
  75.                             xhr.send(JSON.stringify(data));
  76.                 });
  77.                 return promise
  78.             },
  79.                 editData(id,nama,email,feed){
  80.                 this.isEdit = true
  81.                 this.nama = nama
  82.                 this.id = id
  83.                 this.email = email ;
  84.                 this.feedback = feed;
  85.             },
  86.             updateData(){
  87.                 let formData = {
  88.                     nama : this.nama,
  89.                     email : this.email,
  90.                     feedback : this.feedback,
  91.                 };
  92.                 JSON.stringify(formData);  
  93.                 var xhr = new XMLHttpRequest();
  94.                 xhr.open("PUT", 'http://localhost:8000/api/feedback/'+this.id);
  95.                 xhr.setRequestHeader('Content-type','application/json; charset=utf-8');
  96.                 xhr.onload = function () {
  97.  
  98.                     if (xhr.readyState == 4 && xhr.status == 201) {
  99.                         alert(xhr.response)
  100.                     } else {
  101.                         alert(xhr.status)
  102.                     }
  103.                 }
  104.                 xhr.send(formData);
  105.             }
  106.         },
  107.         created() {
  108.             this.sendHttpRequest('GET','http://localhost:8000/api/feedback').then(responseData => {
  109.                 this.AllFeedback = responseData['data'];
  110.             });
  111.         },
  112.     }
  113. </script>
  114.  
  115. <style scoped>
  116.     table{
  117.         margin: 0 auto;
  118.     }
  119.     .search{
  120.         grid-column:1/4;
  121.         grid-row: 1/3;
  122.         padding:  20px 20px ;
  123.         border: none;
  124.         border-radius: 20px;
  125.         box-shadow: 1px 8px 29px -10px rgba(0,0,0,0.75);
  126.         outline: none;
  127.     }
  128.     .search-box{
  129.         width: 60%;
  130.         grid-column-gap: 20px;
  131.         display: grid !important;
  132.         grid-template-columns:  1fr 1fr 1fr 1fr ;
  133.         grid-template-rows:  50px;
  134.         margin: 20px auto 40px;
  135.  
  136.     }
  137.     .input-submit{
  138.         grid-column:4/5;
  139.         background: #42b983;
  140.         border: none;
  141.         box-shadow: 1px 8px 29px -10px rgba(0,0,0,0.75);
  142.         /*padding:20px;*/
  143.         font-size: 20px;
  144.         border-radius: 20px;
  145.     }
  146.     .search::placeholder{
  147.         padding-left: 20px;
  148.         font-size: 20px;
  149.         opacity: 0.5;
  150.     }
  151.  
  152.     .table td, .table th {
  153.  
  154.         padding:10px;
  155.  
  156.     }
  157.  
  158.     .table th {
  159.         background: #00997e;
  160.         color: #fffbf7;
  161.         font-size: 20px;
  162.     }
  163.  
  164.     .btn-delete{
  165.         background: #990002;
  166.         border: 0;
  167.         padding:5px;
  168.         border-radius: 5px;
  169.         color:white;
  170.         font-weight:bold ;
  171.         margin: 4px;
  172.     }
  173.  
  174.     .btn-edit{
  175.         background: #ff9b39;
  176.         border: 0;
  177.         padding:5px;
  178.         border-radius: 5px;
  179.         color:white;
  180.         font-weight:bold ;
  181.     }
  182.  
  183. </style>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement