Advertisement
hsianghui

IS3106 Lab6 (searchCustomers2.xhtml) script section

Oct 29th, 2017 (edited)
683
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
HTML 5 7.71 KB | None | 0 0
  1. <script>
  2. //<![CDATA[
  3. //Add the CDATA tag so that JSF will not have issues when using sensitive
  4. //symbols e.g. < and &
  5.  
  6. var selectedCId = null;
  7. var dtable = $('#example1').DataTable({
  8.  'paging': true,
  9.  'lengthChange': false,
  10.    'pageLength': 5, //5 entries per page
  11.    'searching': true,
  12.    'ordering': true,
  13.    'info': true,
  14.    'autoWidth': false,
  15.    'ajax': {
  16.      url: '/CRM-war/webresources/customers',
  17.      dataFilter: function (data) {
  18.        //add the 'data' attribute to the JSON response
  19.        //so that it can be read properly with DataTable
  20.        var json = jQuery.parseJSON(data);
  21.  
  22.        json.map(function (item) {
  23.            //convert gender's value to 'Female' or 'Male'
  24.            item.gender = (item.gender === 1) ? 'Female' : 'Male';
  25.  
  26.            //convert dob and created's date format
  27.            //remove the [UTC] suffix
  28.            item.created = moment(item.created.substring(0, item.created.length - 5)).format('DD/MM/YYYY');
  29.            item.dob = moment(item.dob.substring(0, item.dob.length - 5)).format('DD/MM/YYYY');
  30.          });
  31.  
  32.        //convert all the gender field to be male or female
  33.        json = {'data': json};
  34.        return JSON.stringify(json);
  35.      }
  36.    },
  37.    "columnDefs": [{
  38.      'targets': -1,
  39.      'data': null,
  40.      'defaultContent': '<div class="btn-group">\
  41.      <button type="button" data-type="view" class="search btn btn-default" data-toggle="modal" data-target="#modal-default"><i class="fa fa-fw fa-search"></i></button>\
  42.      <button type="button" data-type="edit" class="btn btn-default"><i class="fa fa-fw fa-edit"></i></button>\
  43.      <button type="button" data-type="delete" class="btn btn-default"><i class="fa fa-fw fa-trash"></i></button>\
  44.      </div>'
  45.    }],
  46.    'columns': [
  47.      {'data': 'id'},{'data': 'name'},{'data': 'gender'},{'data': 'dob'},
  48.      {'data': 'created'},{'data': null}
  49.    ]
  50.  });
  51.  
  52. function reloadDataTable() {
  53.  dtable.ajax.reload(function () {
  54.    if (selectedCId !== null) {
  55.      var data = dtable.data();
  56.      for (var i = 0; i < data.length; i++) {
  57.        if (data[i].id === selectedCId) {
  58.          refreshDialog(data[i]);
  59.          break;
  60.        }
  61.      }
  62.    }
  63.  });
  64. } //end reloadDataTable
  65.  
  66. function addContact(cId) {
  67.  var contact = $('#selectContact').val();
  68.  var contactValue = $('#inputContactValue').val().trim();
  69.  if (contactValue === ''){
  70.    return;
  71.  }
  72.  
  73.  var data = {};
  74.  if (contact === 'PHONE') {
  75.    data.phone = contactValue;
  76.  }
  77.  else if (contact === 'EMAIL') {
  78.    data.email = contactValue;
  79.  }
  80.  
  81.  $.ajax({
  82.    url: '/CRM-war/webresources/customers/' + cId + '/contacts',
  83.    headers: {
  84.      'Accept': 'application/json',
  85.      'Content-Type': 'application/json'
  86.    },
  87.    type: 'POST',
  88.    data: JSON.stringify(data),
  89.    success: function(){
  90.      reloadDataTable();
  91.    }
  92.  });
  93.  } //end addContact
  94.  
  95.  function addField(cId) {
  96.    var field = $('#inputField').val().trim();
  97.    var fieldValue = $('#inputFieldValue').val().trim();
  98.    if (field === '' || fieldValue === ''){
  99.      return;
  100.    }
  101.  
  102.    $.ajax({
  103.      url: '/CRM-war/webresources/customers/' + cId + '/fields',
  104.      headers: {
  105.        'Accept': 'application/json',
  106.        'Content-Type': 'application/json'
  107.      },
  108.      type: 'POST',
  109.      data: JSON.stringify({name: field, fieldValue: fieldValue}),
  110.      success: function(){
  111.        reloadDataTable();
  112.      }
  113.    });
  114. } //end addField
  115.  
  116. function deleteContact(e) {
  117.  var thisElement = $(e);
  118.  var cId = thisElement.attr('data-contact-id');
  119.  
  120.  var choice = confirm("Do you want to delete?");
  121.  
  122.  if (choice) {
  123.    $.ajax({
  124.      url: '/CRM-war/webresources/contacts/' + cId,
  125.      type: 'DELETE',
  126.      success: function () {
  127.        reloadDataTable();
  128.      }
  129.    });
  130.  }
  131. } //end deleteContact
  132.  
  133. function deleteField(e) {
  134.  var thisElement = $(e);
  135.  var fId = thisElement.attr('data-field-id');
  136.  var cId = thisElement.attr('data-customer-id');
  137.  
  138.  var choice = confirm("Do you want to delete?");
  139.  
  140.  if (choice) {
  141.    $.ajax({
  142.      url: '/CRM-war/webresources/customers/' + cId + '/fields/' + fId,
  143.      type: 'DELETE',
  144.      success: function () {
  145.        reloadDataTable();
  146.      }
  147.    });
  148.  }
  149. } //end deleteField
  150.  
  151. function refreshDialog(data) {
  152.  var cId = data.id;
  153.  var html = '<div class="row">\
  154.  <div class="col-4"><b>Id</b></div>\
  155.  <div class="col-8">' + cId + '</div>\
  156.  <div class="col-4"><b>Name</b></div>\
  157.  <div class="col-8">' + data.name + '</div>\
  158.  <div class="col-4"><b>Gender</b></div>\
  159.  <div class="col-8">' + data.gender + '</div>\
  160.  <div class="col-4"><b>DOB</b></div>\
  161.  <div class="col-8">' + data.dob + '</div>\
  162.  <div class="col-4"><b>Created</b></div>\
  163.  <div class="col-8">' + data.created + '</div>';
  164.  
  165.    //add list of fields
  166.    var fields = data['fields'];
  167.    fields.map(function (item) {
  168.      html += '<div class="col-4"><b>' + item.name + '</b></div>';
  169.      html += '<div class="col-4">' + item.fieldValue + '</div>';
  170.      html += '<div class="col-4"><button class="btn btn-danger btn-sm" data-customer-id="' + data.id + '" data-field-id="' + item.id + '" onclick="deleteField(this)">Delete</button></div>';
  171.    });
  172.  
  173.    //add list of contacts
  174.    var contacts = data.contacts;
  175.    contacts.map(function (item) {
  176.      if (item['phone']) {
  177.        html += '<div class="col-4"><b>Phone</b></div>';
  178.        html += '<div class="col-4">' + item.phone + '</div>';
  179.        html += '<div class="col-4"><button class="btn btn-danger btn-sm" data-contact-id="' + item.id + '" onclick="deleteContact(this)">Delete</button></div>';
  180.      }
  181.      else if (item['email']) {
  182.        html += '<div class="col-4"><b>Email</b></div>';
  183.        html += '<div class="col-4">' + item.email + '</div>';
  184.        html += '<div class="col-4"><button class="btn btn-danger btn-sm" data-contact-id="' + item.id + '" onclick="deleteContact(this)">Delete</button></div>';
  185.      }
  186.    });
  187.  
  188.    //add textbox for adding field
  189.    html += '<div class="col-4"><input class="form-control" id="inputField" placeholder="field name" required/></div>';
  190.    html += '<div class="col-4"><input class="form-control" id="inputFieldValue" placeholder="field value" required/></div>';
  191.    html += '<div class="col-4"><button class="btn btn-primary" onclick="addField(' + cId + ')">Add Field</button></div>';
  192.  
  193.    //add textbox for adding contact
  194.    html += '<div class="col-4"><select class="form-control" id="selectContact"><option value="PHONE">Phone</option><option value="EMAIL">Email</option></select></div>';
  195.    html += '<div class="col-4"><input class="form-control" id="inputContactValue" required/></div>';
  196.    html += '<div class="col-4"><button class="btn btn-success" onclick="addContact(' + cId + ')">Add Contact</button></div>';
  197.  
  198.    html += '</div>';
  199.    $('#dialog-body').html(html);
  200. } //end refreshDialog
  201.  
  202. $('#example1 tbody').on('click', 'button', function () {
  203.  var button = $(this);
  204.  var type = button.attr('data-type');
  205.  var data = dtable.row($(this).parents('tr')).data();
  206.  var id = data.id;
  207.  
  208.  if (type === 'view') {
  209.    //load the dialog box
  210.    refreshDialog(data);
  211.    selectedCId = id;
  212.  } //end if
  213.  else if (type === 'edit') {
  214.    window.location.href = "manageCustomer.xhtml?cId=" + id;
  215.  } //end else if
  216.  else if (type === 'delete') {
  217.    //DO a DELETE request and refresh
  218.    var choice = confirm("Do you want to delete?");
  219.  
  220.    if (choice) {
  221.      $.ajax({
  222.        url: '/CRM-war/webresources/customers/' + id,
  223.        type: 'DELETE',
  224.        success: function () {
  225.          dtable.ajax.reload();
  226.        }
  227.      });
  228.    } //end if
  229.  } //end else if
  230. });
  231.  
  232. $('#modal-default').on('hidden.bs.modal', function (e) {
  233.  selectedCId = null;
  234. })
  235. //]]>
  236. </script>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement