main.js 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. console.clear();
  2. var apiUrl = 'http://helloworld.filonitta.fe.a-level.com.ua:10011/api/v1';
  3. var service = new HttpService(apiUrl);
  4. var selectors = { //переменные
  5. studentsList: $('#students-list'),
  6. formUpdate: $('#form-update'),
  7. btnUpdate: $('#btn-update'),
  8. formCreateStudent: $('#form-create-student'),
  9. addField: $('#addField'),
  10. delField: $('#delField'),
  11. extraFieldsCounter: $('[name="extraFields[]"]').length,
  12. btnDeleteStudent: $('#btn-delete')
  13. };
  14. console.log(service);
  15. service.getAllStudents().done(response => {
  16. response.forEach(students => {
  17. $('<a>')
  18. .addClass('list-group-item')
  19. .attr('href','#')
  20. .attr('data-id', students.id)
  21. .text(`${students.lastname} ${students.firstname}`)
  22. .appendTo(selectors.studentsList)
  23. });
  24. console.log(response);
  25. }).fail(error => {});
  26. $(selectors.studentsList).on('click', '[data-id]', function(event) {
  27. event.preventDefault();
  28. var studentId = $(this).data('id');
  29. console.log(studentId);
  30. service.getStudentById(studentId).done(response => {
  31. for (let key in response) {
  32. selectors.formUpdate.find(`[name=${key}]`).val(response[key]);
  33. console.log(response.group_id);
  34. }
  35. if (response.extraFields) {
  36. response.extraFields.forEach(function(value, i) {
  37. $('<div class="form-group">').append(
  38. $('<input>').attr({
  39. 'type': 'text',
  40. 'class': 'form-control',
  41. 'name': 'extraFields[]',
  42. 'placeholder': 'Field ' + (i + 1)
  43. }).val(value)
  44. ).appendTo(selectors.formUpdate);
  45. })
  46. }
  47. });
  48. });
  49. selectors.formUpdate.on('submit', function(event) {
  50. event.preventDefault();
  51. $('.has-error', this).removeClass('has-error');
  52. //var data = $(this).serialize();
  53. var studentId = $(this).find('[name=id]').val();
  54. service.updateStudentsById(studentId, $(this).serialize()).done(response => {
  55. console.log(response);
  56. $(this).find('[name="extraFields[]"]').remove();
  57. this.reset();
  58. selectors.studentsList.find(`[data-id=${studentId}]`)
  59. .text(`${response.lastname} ${response.firstname}`);
  60. }).fail(response => {
  61. var response = response.responseJSON;
  62. var errors = response.errors;
  63. for (let value of errors) {
  64. selectors.formUpdate.find(`[name=${value.field}]`).parent().addClass('has-error');
  65. }
  66. console.log( response );
  67. });
  68. });
  69. //---
  70. $(selectors.addField).on('click', function () {
  71. $('<div>').addClass('form-group')
  72. .append($('<input>').attr({
  73. 'type': 'text',
  74. 'class': 'form-control',
  75. 'name': 'extraFields[]',
  76. 'placeholder': 'Field ' + ++selectors.extraFieldsCounter,
  77. 'autocomplete': 'off'
  78. })
  79. .addClass('form-control'))
  80. .appendTo(selectors.formCreateStudent);
  81. });
  82. $(selectors.delField).on('click', function () {
  83. $(selectors.formCreateStudent).find('[name="extraFields"]').last().remove();
  84. if(selectors.extraFieldsCounter > 0) {
  85. selectors.extraFieldsCounter--;
  86. }
  87. });
  88. $(selectors.formCreateStudent).on('submit', function(event){
  89. event.preventDefault();
  90. console.log(data);
  91. var data = $(this).serialize();
  92. var studentId = $(this).data('id');
  93. console.log(data);
  94. service.postStudentsById(data).done(response => {
  95. $(this).find('[name="extraFields[]"]').remove();
  96. this.reset();
  97. selectors.extraFieldsCounter = 0;
  98. $('<a>')
  99. .addClass('list-group-item')
  100. .attr('href','#')
  101. .attr('data-id', studentId)
  102. .text(`${response.lastname} ${response.firstname}`)
  103. .appendTo(selectors.studentsList)
  104. })
  105. .fail( function (response) {
  106. var response = response.responseJSON;
  107. var errors = response.errors;
  108. errors.forEach( function (error) {
  109. $(this).find('[name="' + error.field + '"]')
  110. .parent()
  111. .addClass('has-error');
  112. });
  113. response.group_id = 5;
  114. });
  115. });
  116. $(selectors.btnDeleteStudent).on('click', function() {
  117. var studentId = selectors.formUpdate.find('[name=id]').val();
  118. selectors.formUpdate.trigger('reset');
  119. selectors.formUpdate.find('[name="extraFields[]"]').remove();
  120. service.deleteStudentById(studentId).done(response => {
  121. selectors.studentsList.find('[data-id=' + studentId + ']').remove();
  122. })
  123. .fail(function(response) {
  124. console.error('response', response)
  125. })
  126. });