// Возвращает список значений из БД async function crudRead(route, limit = 999) { const url = "/"+route+"/read?limit="+limit; return $.ajax({ type: 'POST', url: url }); } // Отправляет запрос к API на удаление // После удаления на странице удаляется элемент с ID контейнера function crudDelete(route, id, containerID=null) { if (!confirm("Точно удалить?")) { return; } const url = '/'+route+'/delete?id='+id; $.ajax({ url: url, success: function() { document.getElementById(containerID).remove(); } }); } // Показывает форму обновления элемента async function crudUpdateShowWindow(route, options, name, afterUpdatedCallback) { const card = await createWindow(route, "update", name, options, afterUpdatedCallback) $(document.body).append(card); $(document.body).append($('
')); } // Показывает форму создания элемента async function crudCreateShowWindow(route, options, name, afterCreatedCallback) { const card = await createWindow(route, "create", name, options, afterCreatedCallback) $(document.body).append(card); $(document.body).append($('
')); } async function createWindow(route, action, name, options, afterCallback) { // Создание карточки-контейнера const card = $(""); // Создание формы и привязка к ней обратного вызова const form = $("
"); form.submit(function(e) { e.preventDefault(); $.ajax({ url: "/"+route+"/"+action, type: 'post', data: $(this).serialize(), success: function(response) { // Окно и слой затемнения удаляется removeModalWindows(); // Вызывается функция обратного вызова с параметром - объектом с информацией о созданном элементе afterCallback(JSON.parse(response)); } }); }); // Добавление к форме полей ввода for (const [key, value] of Object.entries(options)) { if (value.type == "hidden") { // Невидимое поле ввода form.append($('')); continue; } // Добавляем контейнер поля let control_container = $("
"); // Надпись control_container.append($('')); // Непосредственно поле ввода if (value.type == 'plain') { // Текстовое const input = $(''); if (value.default != undefined) { input.attr("value", value.default); } control_container.append(input); } else if (value.type == 'crudRead') { // Выбор из нескольких вариантов const values = JSON.parse(await crudRead(value.route)); const selectInput = $('