var http = new HttpService('http://helloworld.filonitta.fe4.a-level.com.ua/api/v1'); console.log(http); var $studentList = $('#students-list'); var $formEditStudent = $('#form-edit-student'); var request = http.getStudents(); var $formCreateStudent = $('#form-create-student'); var $addField = $('#add-field').data('counter', 1); var $deleteStudent = $('#delete-student'); request.done(function(response){ console.log(response); response.forEach(function(student){ $('') .text(student.lastname + ' ' + student.firstname) .attr('data-id', student.id) .addClass('list-group-item') .appendTo($studentList); }) }); request.fail(function(error){ console.log(error); }) $studentList.on('click', '[data-id]', function(event){ event.preventDefault(); var studentId = $(this).data('id'); $('.has-error', $formEditStudent).removeClass('has-error'); // удаление красной подсветки $('.has-error', $formCreateStudent).removeClass('has-error'); // удаление красной подсветки $formEditStudent.find('[id="extraField"]').remove(); // удаление доп. полей http.getStudentsById(studentId) .done(function(response) { if (response.extraField) { for(var key in response.extraField) { var $extraField = $('
').addClass('form-group').appendTo($formEditStudent);; var $extraFieldInput = $('') .attr({'type': 'text', 'name': 'extraField[' + key + ']', 'id': 'extraField'}) .val(response.extraField[key]) .addClass('form-control') .appendTo($extraField); } } for(var key in response) { $formEditStudent.find('[name="' + key + '"]').val(response[key]); } }) }) $formEditStudent.on('submit', function(event){ event.preventDefault(); var that =this; $('.has-error', this).removeClass('has-error'); // удаление красной подсветки var data = $(this).serialize(), studentId = $(this).find('[name=id]').val(); http.updateUserById(studentId, data) .done(function(response){ $studentList .find('[data-id="' + studentId + '"]') .text(response.lastname + ' ' + response.firstname); }) .fail(function(response){ var errors = response.responseJSON.errors; errors.forEach(function(error) { console.log(error.field); console.log(that); $(that) .find('[name="' + error.field + '"]') .parent() .addClass('has-error'); }) }) }) $formCreateStudent.on('submit', function(event){ event.preventDefault(); var data = $(this).serialize(); var that =this; console.log(data); $addField.data('counter', 1); // обнулениие счетчика $formCreateStudent.find('[id="extraField"]').remove(); // удаление доп. полей $('.has-error', this).removeClass('has-error'); // удаление красной подсветки $formCreateStudent.find('[id="clear-form-create"]').val(''); // очищение полей http.createStudent(data) .done(function(response){ $('') .text(response.lastname + ' ' + response.firstname) .attr('data-id', response.id) .addClass('list-group-item') .appendTo($studentList); console.log(response); }) .fail(function(response){ var errors = response.responseJSON.errors; errors.forEach(function(error) { $(that) .find('[name="' + error.field + '"]') .parent() .addClass('has-error'); }) }) }) $addField.on('click', function(event){ // кнопка добавить поле var counter = $addField.data('counter'); // счетчик нажатий на кнопку $addField.data('counter', counter + 1); var $extraField = $('
').addClass('form-group').appendTo($formCreateStudent);; var $extraFieldInput = $('') .attr({'type': 'text', 'name': 'extraField[' + counter + ']', 'placeholder': 'field' + counter, 'id': 'extraField'}) .addClass('form-control') .appendTo($extraField); console.log(counter); }) $deleteStudent.on('click', function(){ // кнопка удалить var studentId = $(this).parent().parent().find('[name="id"]').val(); //ищем кого удалить http.deleteStudent(studentId) .done(function(response){ $studentList.find('[data-id="' + studentId + '"]').remove(); $formEditStudent.find('[id="extraField"]').remove(); // удаление доп. полей $formEditStudent.find('[id="clear-form-edit"]').val(''); // очищение полей }) })