Advertisement
Lauda

JS ajax/json handlers

Jul 3rd, 2014
294
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // JS handlers for AjaxServlet
  2. $(function() {
  3.         // Table sorting on click in th
  4.         $(".table:not(.donotsort)").tablesorter();
  5.         $('.table:not(.donotsort)').find('.initsort').trigger('sort');
  6.        
  7.         // Search dropdown
  8.         $('.search-panel .dropdown-menu').find('a').click(function(e) {
  9.             e.preventDefault();
  10.             var param = $(this).attr("href").replace("#","");
  11.             var concept = $(this).text();
  12.             $('.search-panel span#search_concept').text(concept);
  13.             $('.input-group #search_param').val(param);
  14.         });
  15.        
  16.         // Some fancy stuff :D
  17.         $('.selectpicker').selectpicker({
  18.             style: 'btn-default',
  19.             size: 20
  20.         });
  21.    
  22.         // Let's rock & roll based on ajax class!
  23.         $('.ajax').on('click', function() {
  24.             var el = $(this);
  25.             var bean = el.data('bean');
  26.             var action = el.data('action');
  27.             var key = el.val();
  28.             var req = {
  29.                 action: action,
  30.                 bean: bean,
  31.                 key: key
  32.             };
  33.            
  34.             var proceed = true;
  35.             if (bean == 'category') {
  36.                 proceed = confirm("This action cannot be undone, are you sure?");
  37.             }
  38.            
  39.             if (!proceed)
  40.                 return;
  41.            
  42.             // We prepare JSON for sending
  43.             $.ajax({
  44.                 type: 'POST',
  45.                 url: 'AjaxServlet',
  46.                 dataType: 'json',
  47.                 data: {data: JSON.stringify(req)}
  48.             }).
  49.             success(function(res) {
  50.                 if (!res.error) {
  51.                     var undoMessage = "";
  52.                    
  53.                     // Undo action:
  54.                     if (res.undoKey)
  55.                         undoMessage = "<br><a href=UndoAction?key="+res.undoKey+"><u>Undo</u></a>";
  56.                    
  57.                     // Display fancy message
  58.                     toastr['success'](res.message + undoMessage, "Success");
  59.                     console.log(res);
  60.                    
  61.                     // Do the action based on ajax call from AjaxServlet
  62.                     switch(action) {
  63.                         case "delete":
  64.                             deleteSuccess(bean, res);
  65.                         break;
  66.                         case "unpublish":
  67.                             unpublishSuccess(el);
  68.                         break;
  69.                         case "publish":
  70.                             publishSuccess(el);
  71.                         break;
  72.                         case "addcart":
  73.                             addCartSuccess(res);
  74.                         break;
  75.                         case "removeCart":
  76.                             removeCartSuccess(res);
  77.                         break;
  78.                     }
  79.                 }
  80.                 else {
  81.                     // Display error message
  82.                     toastr['error'](res.message, "Error");
  83.                 }
  84.             }).
  85.             error(function(res) {
  86.                 if (!res.message)
  87.                     // Something bad happened :(
  88.                     res.message = "Action not permitted.";
  89.                 toastr['error'](res.message, "Error");
  90.             });
  91.         });
  92.        
  93.         function deleteSuccess(bean, res) {
  94.             if (Array.isArray(res.deletedKeys)) {
  95.                 $.each(res.deletedKeys, function(key, value) {
  96.                     $.deleteFromDOM(bean, value);
  97.                 });
  98.             }
  99.             else {
  100.                 $.deleteFromDOM(bean, res.deletedKeys); // only one
  101.             }
  102.            
  103.             if (Array.isArray(res.deletedComponents)) {
  104.                 $.each(res.deletedComponents, function(key, value){
  105.                     $.deleteFromDOM("component", value);
  106.                 });
  107.             }
  108.         }
  109.        
  110.         function unpublishSuccess(el) {
  111.             el.removeClass("btn-success").addClass("btn-warning");
  112.             el.data("action", "publish");
  113.             el.html("<i class=\"icon-remove\"></i>");
  114.         }
  115.        
  116.         function publishSuccess(el) {
  117.             el.removeClass("btn-warning").addClass("btn-success");
  118.             el.data("action", "unpublish");
  119.             el.html("<i class=\"icon-ok-sign\"></i>");
  120.         }
  121.        
  122.         function removeLastTableRow(t) {
  123.             t.each(function(){
  124.             if ($('tbody', this).length > 0) {
  125.                 $('tbody tr:last', this).remove();
  126.             }
  127.             else {
  128.                 $('tr:last', this).remove();
  129.             }
  130.             });
  131.         }
  132.  
  133.         // Refresh shopping cart
  134.         // TODO: improve this...
  135.         function refreshShoppingCart(res) {
  136.         //  $.each(res, function(i, item) {
  137.                 console.log("RETURNED ITEM NAME: " + res.itemName + " - " + res.itemKey);
  138.                 var tmp = "";
  139.                 var tPrice = (res.itemPrice * res.itemAmount);
  140.                 if (res.itemType == "Component") {
  141.                     tmp = '<a href="ComponentView?key='+ res.itemKey +'">'+ res.itemKey + '</a>';
  142.                     console.log("IT IS COMPONENT: " + tmp);
  143.                 }
  144.                 else {
  145.                     tmp = res.itemName;
  146.                     console.log("IT IS DEVICE: " + tmp);
  147.                 }
  148.                
  149.                 $('<tr data-key="'+res.itemKey+'" class="bill">').append(
  150.                 $('<td>').html(tmp),
  151.                 $('<td>').text(res.itemType),
  152.                 $('<td>').text(res.itemDesc),
  153.                 $('<td class="single-price">').text(res.itemPrice),
  154.                 $('<td>').text(res.itemAmount),
  155.                 $('<td class="single-total">').text(tPrice)
  156.                 ).appendTo('#cartTable');
  157.         //  });
  158.         }
  159.        
  160.         // TODO: Implement cart refreshing! (Edit: almost done!)
  161.         function addCartSuccess(res) {
  162.             if (res.cartItems) {
  163.                 $("#cart-items").html("<a href=\"#cart\" role=\"button\" data-toggle=\"modal\">" + res.cartItems + " item(s) in your <i class=\"icon-shopping-cart\"></i></a>");
  164.             refreshShoppingCart(res);
  165.             }
  166.         }
  167.        
  168.         function removeCartSuccess(res) {
  169.             $("#cart-items").html("<a href=\"#cart\" role=\"button\" data-toggle=\"modal\">" + res.cartItems + " item(s) in your <i class=\"icon-shopping-cart\"></i></a>");
  170.             $.deleteFromDOM("bill", res.removedKey);
  171.             // refreshShoppingCart(res);
  172.         }
  173.        
  174. });
  175.  
  176. $.extend({
  177.     deleteFromDOM: function(bean, key){
  178.         console.log("Deleting from DOM", bean, key);
  179.         $("." + bean).each(function(index, item){
  180.             if ($(item).data("key") === key) { // We can only delete an item if keys match!
  181.                 $(item).remove();
  182.             }
  183.         });
  184.     }
  185. });
  186. /*
  187. // TODO: Rewrite this to extend jQuery activity
  188. function deleteFromDOM(bean, key){
  189.     console.log("Deleting from DOM", bean, key);
  190.     $("."+bean).each(function(index, item){
  191.         if($(item).data("key") === key){
  192.             $(item).remove();
  193.         }
  194.     });
  195. }
  196. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement