script.js 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. var http = new HttpService('http://helloworld.filonitta.fe4.a-level.com.ua/api/v1');
  2. console.log(http);
  3. var $studentList = $('#students-list');
  4. var $formEditStudent = $('#form-edit-student');
  5. var request = http.getStudents();
  6. var $formCreateStudent = $('#form-create-student');
  7. var $addField = $('#add-field').data('counter', 1);
  8. var $deleteStudent = $('#delete-student');
  9. request.done(function(response){
  10. console.log(response);
  11. response.forEach(function(student){
  12. $('<a href="">')
  13. .text(student.lastname + ' ' + student.firstname)
  14. .attr('data-id', student.id)
  15. .addClass('list-group-item')
  16. .appendTo($studentList);
  17. })
  18. });
  19. request.fail(function(error){
  20. console.log(error);
  21. })
  22. $studentList.on('click', '[data-id]', function(event){
  23. event.preventDefault();
  24. var studentId = $(this).data('id');
  25. $('.has-error', $formEditStudent).removeClass('has-error'); // удаление красной подсветки
  26. $('.has-error', $formCreateStudent).removeClass('has-error'); // удаление красной подсветки
  27. $formEditStudent.find('[id="extraField"]').remove(); // удаление доп. полей
  28. http.getStudentsById(studentId)
  29. .done(function(response) {
  30. if (response.extraField) {
  31. for(var key in response.extraField) {
  32. var $extraField = $('<div>').addClass('form-group').appendTo($formEditStudent);;
  33. var $extraFieldInput = $('<input>')
  34. .attr({'type': 'text', 'name': 'extraField[' + key + ']', 'id': 'extraField'})
  35. .val(response.extraField[key])
  36. .addClass('form-control')
  37. .appendTo($extraField);
  38. }
  39. }
  40. for(var key in response) {
  41. $formEditStudent.find('[name="' + key + '"]').val(response[key]);
  42. }
  43. })
  44. })
  45. $formEditStudent.on('submit', function(event){
  46. event.preventDefault();
  47. var that =this;
  48. $('.has-error', this).removeClass('has-error'); // удаление красной подсветки
  49. var data = $(this).serialize(),
  50. studentId = $(this).find('[name=id]').val();
  51. http.updateUserById(studentId, data)
  52. .done(function(response){
  53. $studentList
  54. .find('[data-id="' + studentId + '"]')
  55. .text(response.lastname + ' ' + response.firstname);
  56. })
  57. .fail(function(response){
  58. var errors = response.responseJSON.errors;
  59. errors.forEach(function(error) {
  60. console.log(error.field);
  61. console.log(that);
  62. $(that)
  63. .find('[name="' + error.field + '"]')
  64. .parent()
  65. .addClass('has-error');
  66. })
  67. })
  68. })
  69. $formCreateStudent.on('submit', function(event){
  70. event.preventDefault();
  71. var data = $(this).serialize();
  72. var that =this;
  73. console.log(data);
  74. $addField.data('counter', 1); // обнулениие счетчика
  75. $formCreateStudent.find('[id="extraField"]').remove(); // удаление доп. полей
  76. $('.has-error', this).removeClass('has-error'); // удаление красной подсветки
  77. $formCreateStudent.find('[id="clear-form-create"]').val(''); // очищение полей
  78. http.createStudent(data)
  79. .done(function(response){
  80. $('<a href="">')
  81. .text(response.lastname + ' ' + response.firstname)
  82. .attr('data-id', response.id)
  83. .addClass('list-group-item')
  84. .appendTo($studentList);
  85. console.log(response);
  86. })
  87. .fail(function(response){
  88. var errors = response.responseJSON.errors;
  89. errors.forEach(function(error) {
  90. $(that)
  91. .find('[name="' + error.field + '"]')
  92. .parent()
  93. .addClass('has-error');
  94. })
  95. })
  96. })
  97. $addField.on('click', function(event){ // кнопка добавить поле
  98. var counter = $addField.data('counter'); // счетчик нажатий на кнопку
  99. $addField.data('counter', counter + 1);
  100. var $extraField = $('<div>').addClass('form-group').appendTo($formCreateStudent);;
  101. var $extraFieldInput = $('<input>')
  102. .attr({'type': 'text', 'name': 'extraField[' + counter + ']', 'placeholder': 'field' + counter, 'id': 'extraField'})
  103. .addClass('form-control')
  104. .appendTo($extraField);
  105. console.log(counter);
  106. })
  107. $deleteStudent.on('click', function(){ // кнопка удалить
  108. var studentId = $(this).parent().parent().find('[name="id"]').val(); //ищем кого удалить
  109. http.deleteStudent(studentId)
  110. .done(function(response){
  111. $studentList.find('[data-id="' + studentId + '"]').remove();
  112. $formEditStudent.find('[id="extraField"]').remove(); // удаление доп. полей
  113. $formEditStudent.find('[id="clear-form-edit"]').val(''); // очищение полей
  114. })
  115. })