Fix form page

This commit is contained in:
rxdn 2022-02-14 19:59:00 +00:00
parent 2cb8d25633
commit 1674c5552a
2 changed files with 43 additions and 29 deletions

View File

@ -3,9 +3,15 @@ package forms
import (
dbclient "github.com/TicketsBot/GoPanel/database"
"github.com/TicketsBot/GoPanel/utils"
"github.com/TicketsBot/database"
"github.com/gin-gonic/gin"
)
type embeddedForm struct {
database.Form
Inputs []database.FormInput `json:"inputs"`
}
func GetForms(ctx *gin.Context) {
guildId := ctx.Keys["guildid"].(uint64)
@ -17,12 +23,22 @@ func GetForms(ctx *gin.Context) {
inputs, err := dbclient.Client.FormInput.GetInputsForGuild(guildId)
if err != nil {
ctx.JSON(500, utils.ErrorJson(err))
return
}
ctx.JSON(500, utils.ErrorJson(err))
return
}
ctx.JSON(200, gin.H{
"forms": forms,
"inputs": inputs,
})
data := make([]embeddedForm, len(forms))
for i, form := range forms {
formInputs, ok := inputs[form.Id]
if !ok {
formInputs = make([]database.FormInput, 0)
}
data[i] = embeddedForm{
Form: form,
Inputs: formInputs,
}
}
ctx.JSON(200, data)
}

View File

@ -39,8 +39,8 @@
</div>
<div class="manage">
{#if activeFormId !== null && inputs[activeFormId.toString()]}
{#each inputs[activeFormId.toString()] as input}
{#if activeFormId !== null}
{#each forms.find(form => form.form_id === activeFormId).inputs as input}
<FormInputRow data={input} formId={activeFormId} withSaveButton={true} withDeleteButton={true}
on:save={(e) => editInput(activeFormId, input.id, e.detail)}
on:delete={() => deleteInput(activeFormId, input.id)}/>
@ -78,12 +78,15 @@
let newTitle;
let forms = [];
let inputs = {};
let activeFormId = null;
let inputCreationData = {};
$: windowWidth = 0;
function getForm(formId) {
return forms.find(form => form.form_id === formId);
}
async function createForm() {
let data = {
title: newTitle,
@ -97,7 +100,6 @@
notifySuccess(`Form ${newTitle} has been created`);
newTitle = '';
inputs[res.data.form_id] = {};
forms = [...forms, res.data];
activeFormId = res.data.form_id;
}
@ -112,7 +114,6 @@
notifySuccess(`Form deleted successfully`);
forms = forms.filter(form => form.form_id !== id);
delete inputs[id.toString()];
if (forms.length > 0) {
activeFormId = forms[0].form_id;
} else {
@ -129,8 +130,11 @@
return;
}
inputs[res.data.form_id] = [...inputs[res.data.form_id], res.data];
let form = getForm(res.data.form_id);
form.inputs = [...form.inputs, res.data];
forms = forms;
inputCreationData = {};
notifySuccess('Form input created successfully');
}
@ -143,8 +147,10 @@
return;
}
inputs[res.data.form_id] = inputs[res.data.form_id].filter(input => input.id !== inputId);
inputs[res.data.form_id] = [...inputs[res.data.form_id], res.data];
let form = getForm(formId);
form.inputs = form.inputs.filter(input => input.id !== inputId);
form.inputs = [...form.inputs, res.data];
notifySuccess('Form input updated successfully');
}
@ -155,7 +161,11 @@
return;
}
inputs[formId] = inputs[formId].filter(input => input.id !== inputId);
// TODO: delete keyword?
let form = getForm(formId);
form.inputs = form.inputs.filter(input => input.id !== inputId);
forms = forms;
notifySuccess('Form input deleted successfully');
}
@ -166,22 +176,10 @@
return;
}
forms = res.data.forms || [];
for (const form of forms) {
inputs[form.form_id] = {};
}
for (const [key, value] of Object.entries(res.data.inputs)) {
inputs[key] = value.map(input => ({...input, style: input.style.toString()}));
}
if (forms.length > 0) {
activeFormId = forms[0].form_id;
}
forms = res.data || [];
}
function getActiveFormTitle() {
console.log(forms);
return activeFormId !== null ? forms.find(f => f.form_id === activeFormId).title : 'Unknown';
}