From 67de45f787b475d5683772ee4b8c831d0a80a2e5 Mon Sep 17 00:00:00 2001 From: Pete Matsyburka Date: Sun, 31 Dec 2023 22:39:11 +0200 Subject: [PATCH] optimize fields reorder --- app/javascript/template_builder/fields.vue | 35 ++++++++++++++-------- 1 file changed, 23 insertions(+), 12 deletions(-) diff --git a/app/javascript/template_builder/fields.vue b/app/javascript/template_builder/fields.vue index 434c8f79..63665f8e 100644 --- a/app/javascript/template_builder/fields.vue +++ b/app/javascript/template_builder/fields.vue @@ -13,9 +13,10 @@ />
f.uuid === targetFieldUuid) - - const currentIndex = this.fields.indexOf(this.dragField) - const targetIndex = this.fields.indexOf(field) + if (dragField && targetField && targetField !== dragField) { + const fields = Array.from(this.$refs.fields.children) + const currentIndex = fields.indexOf(dragField) + const targetIndex = fields.indexOf(targetField) if (currentIndex < targetIndex) { - this.fields.splice(targetIndex + 1, 0, this.dragField) - this.fields.splice(currentIndex, 1) + targetField.after(dragField) } else { - this.fields.splice(targetIndex, 0, this.dragField) - this.fields.splice(currentIndex + 1, 1) + targetField.before(dragField) } } }, + reorderFields () { + Array.from(this.$refs.fields.children).forEach((el, index) => { + if (el.dataset.uuid !== this.fields[index].uuid) { + const field = this.fields.find((f) => f.uuid === el.dataset.uuid) + + this.fields.splice(this.fields.indexOf(field), 1) + this.fields.splice(index, 0, field) + } + }) + + this.save() + }, removeSubmitter (submitter) { [...this.fields].forEach((field) => { if (field.submitter_uuid === submitter.uuid) {