Advertisement
simonradev

FisherGame

Mar 31st, 2018
153
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.22 KB | None | 0 0
  1. function attachEvents() {
  2.     const UrlBase = 'https://baas.kinvey.com/appdata/kid_rySvTga5G/biggestCatches/';
  3.  
  4.     const Credentials = {
  5.         username: 'simon',
  6.         password: 's'
  7.     };
  8.  
  9.     const Method = {
  10.         GET: 'GET',
  11.         POST: 'POST',
  12.         PUT: 'PUT',
  13.         DELETE: 'DELETE',
  14.     };
  15.  
  16.     const RegexFirstWord = /(\w+?)\s/;
  17.  
  18.     const divCatches = $('#catches');
  19.     const formAdd = $('#addForm');
  20.  
  21.     const btnLoad = $('button.load').click(onLoadClicked);
  22.     const btnAdd = $('button.add').click(onAddClicked);
  23.  
  24.     function $ajaxAuth(method, url, objCredentials, objData) {
  25.         if (objData &&
  26.             'id' in objData) {
  27.             url += objData.id;
  28.         }
  29.  
  30.         const requestSettings = {
  31.             method,
  32.             url,
  33.             data: objData && JSON.stringify(objData.jsonBody),
  34.             beforeSend: function (xhr) {
  35.                 xhr.setRequestHeader("Authorization", "Basic " + btoa(`${objCredentials.username}:${objCredentials.password}`));
  36.                 xhr.setRequestHeader("Content-Type", "application/json");
  37.             }
  38.         }
  39.  
  40.         return $.ajax(requestSettings);
  41.     }
  42.  
  43.     function $createJsonBodyFromFieldSet(fieldset, emptyInputField = true) {
  44.         const jsonBody = {};
  45.  
  46.         fieldset.find('input').each((ind, elem) => {
  47.             elem = $(elem);
  48.             const propFromClass = elem.attr('class');
  49.             const type = elem.attr('type');
  50.             let parsedValue = elem.val();
  51.             if (type === 'number') {
  52.                 parsedValue = +parsedValue;
  53.             }
  54.            
  55.             jsonBody[propFromClass] = parsedValue
  56.             emptyInputField && elem.val('');
  57.         });
  58.  
  59.         return jsonBody;
  60.     }
  61.  
  62.     function onAddClicked() {
  63.         const jsonBody = $createJsonBodyFromFieldSet(formAdd);
  64.  
  65.         $ajaxAuth(Method.POST, UrlBase, Credentials, { jsonBody });
  66.     }
  67.    
  68.     function onLoadClicked() {
  69.         $ajaxAuth(Method.GET, UrlBase, Credentials)
  70.             .then(loadAllCatches);
  71.     }
  72.  
  73.     function loadAllCatches(allCatches) {
  74.         divCatches.empty();
  75.         for (const currCatch of allCatches) {
  76.             $createCatchDiv(currCatch, divCatches);
  77.         }
  78.     }
  79.  
  80.     function $createCatchDiv({ _id, angler, bait, captureTime, location, species, weight }, elementToAppendTo) {
  81.         const divTarget = $('<div>').addClass('catch').attr('data-id', _id).appendTo(elementToAppendTo);
  82.  
  83.         $createFieldPair('Angler', 'text', angler, divTarget);
  84.         $createFieldPair('Weight', 'number', weight, divTarget);
  85.         $createFieldPair('Species', 'text', species, divTarget);
  86.         $createFieldPair('Location', 'text', location, divTarget);
  87.         $createFieldPair('Bait', 'text', bait, divTarget);
  88.         $createFieldPair('Capture Time', 'number', captureTime, divTarget);
  89.  
  90.         $createButton('Update', $onUpdateClicked, divTarget);
  91.         $createButton('Delete', $onDeleteClicked, divTarget);
  92.     }
  93.  
  94.     function $createFieldPair(name, inpType, value, elementToAppendTo) {
  95.         $('<label>')
  96.             .text(name)
  97.             .appendTo(elementToAppendTo);
  98.  
  99.         name = name.indexOf(' ') >= 0 ?
  100.                     name.replace(RegexFirstWord, (m, g1) => g1.toLowerCase()) :
  101.                     name.toLowerCase();
  102.         $('<input>')
  103.             .attr('type', inpType)
  104.             .attr('value', value)
  105.             .addClass(name)
  106.             .appendTo(elementToAppendTo);
  107.     }
  108.  
  109.     function $createButton(name, clickHandler, elementToAppendTo) {
  110.         $('<button>')
  111.             .addClass(name.toLowerCase())
  112.             .text(name)
  113.             .click(clickHandler)
  114.             .appendTo(elementToAppendTo);
  115.     }
  116.    
  117.     function $onDeleteClicked() {
  118.         const divCatch = $(this).parent();
  119.         const id = divCatch.attr('data-id');
  120.         divCatch.remove();
  121.        
  122.         $ajaxAuth(Method.DELETE, UrlBase, Credentials, { id });
  123.     }
  124.  
  125.     function $onUpdateClicked() {
  126.         const divCatch = $(this).parent();
  127.         const id = divCatch.attr('data-id');
  128.  
  129.         const jsonBody = $createJsonBodyFromFieldSet(divCatch, false);
  130.  
  131.         $ajaxAuth(Method.PUT, UrlBase, Credentials, { id, jsonBody });
  132.     }
  133. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement