main.js 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  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. };
  13. console.log(service);
  14. service.getAllStudents().done(response => {
  15. response.forEach(students => {
  16. $('<a>')
  17. .addClass('list-group-item')
  18. .attr('href','#')
  19. .attr('data-id', students.id)
  20. .text(`${students.lastname} ${students.firstname}`)
  21. .appendTo(selectors.studentsList)
  22. });
  23. console.log(response);
  24. }).fail(error => {});
  25. $(selectors.studentsList).on('click', '[data-id]', function(event) {
  26. event.preventDefault();
  27. var studentId = $(this).data('id');
  28. console.log(studentId);
  29. service.getStudentById(studentId).done(response => {
  30. for (let key in response) {
  31. selectors.formUpdate.find(`[name=${key}]`).val(response[key]);
  32. console.log(response.group_id);
  33. }
  34. if (response.extraFields) {
  35. response.extraFields.forEach(function(value, i) {
  36. $('<div class="form-group">').append(
  37. $('<input>').attr({
  38. 'type': 'text',
  39. 'class': 'form-control',
  40. 'name': 'extraFields[]',
  41. 'placeholder': 'Field ' + (i + 1)
  42. }).val(value)
  43. ).appendTo(selectors.formUpdate);
  44. })
  45. }
  46. });
  47. });
  48. selectors.formUpdate.on('submit', function(event) {
  49. event.preventDefault();
  50. $('.has-error', this).removeClass('has-error');
  51. //var data = $(this).serialize();
  52. var studentId = $(this).find('[name=id]').val();
  53. service.updateStudentsById(studentId, $(this).serialize()).done(response => {
  54. console.log(response);
  55. $(this).find('[name="extraFields[]"]').remove();
  56. this.reset();
  57. selectors.studentsList.find(`[data-id=${studentId}]`)
  58. .text(`${response.lastname} ${response.firstname}`);
  59. }).fail(response => {
  60. var response = response.responseJSON;
  61. var errors = response.errors;
  62. for (let value of errors) {
  63. selectors.formUpdate.find(`[name=${value.field}]`).parent().addClass('has-error');
  64. }
  65. console.log( response );
  66. });
  67. });
  68. //---
  69. $(selectors.addField).on('click', function () {
  70. $('<div>').addClass('form-group')
  71. .append($('<input>').attr({
  72. 'type': 'text',
  73. 'class': 'form-control',
  74. 'name': 'extraFields[]',
  75. 'placeholder': 'Field ' + ++selectors.extraFieldsCounter,
  76. 'autocomplete': 'off'
  77. })
  78. .addClass('form-control'))
  79. .appendTo(selectors.formCreateStudent);
  80. });
  81. $(selectors.delField).on('click', function () {
  82. $(selectors.formCreateStudent).find('[name="extraFields"]').last().remove();
  83. if(selectors.extraFieldsCounter > 0) {
  84. selectors.extraFieldsCounter--;
  85. }
  86. });
  87. $(selectors.formCreateStudent).on('submit', function(event){
  88. event.preventDefault();
  89. console.log(data);
  90. var data = $(this).serialize();
  91. var studentId = $(this).data('id');
  92. console.log(data);
  93. service.postStudentsById(data).done(response => {
  94. $(this).find('[name="extraFields[]"]').remove();
  95. this.reset();
  96. selectors.extraFieldsCounter = 0;
  97. $('<a>')
  98. .addClass('list-group-item')
  99. .attr('href','#')
  100. .attr('data-id', studentId)
  101. .text(`${response.lastname} ${response.firstname}`)
  102. .appendTo(selectors.studentsList)
  103. })
  104. .fail( function (response) {
  105. var response = response.responseJSON;
  106. var errors = response.errors;
  107. errors.forEach( function (error) {
  108. $(this).find('[name="' + error.field + '"]')
  109. .parent()
  110. .addClass('has-error');
  111. });
  112. response.group_id = 5;
  113. });
  114. });