From 994c1b3155d7204b8eee3d8b9ed394607d066023 Mon Sep 17 00:00:00 2001 From: Pete Matsyburka Date: Sat, 12 Sep 2026 18:29:56 +0300 Subject: [PATCH] keep pasted field roles --- app/javascript/template_builder/builder.vue | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/app/javascript/template_builder/builder.vue b/app/javascript/template_builder/builder.vue index f0146f39..46db0dc3 100644 --- a/app/javascript/template_builder/builder.vue +++ b/app/javascript/template_builder/builder.vue @@ -2371,7 +2371,6 @@ export default { const areaCopy = JSON.parse(JSON.stringify(area)) delete fieldCopy.areas - delete fieldCopy.submitter_uuid areaCopy.relativeX = area.x - minX areaCopy.relativeY = area.y - minY @@ -2381,6 +2380,7 @@ export default { const clipboardData = { items, + submitters: this.template.submitters.map((submitter) => ({ uuid: submitter.uuid, name: submitter.name })), templateId: this.template.id, timestamp: Date.now(), isGroup: true @@ -2491,6 +2491,20 @@ export default { const fieldUuidIndex = {} const fieldOptionsMap = {} + const submitterUuidsMap = {} + + const copiedSubmitterUuids = [...new Set(data.items.map((item) => item.field.submitter_uuid).filter(Boolean))] + + if (copiedSubmitterUuids.length > 1) { + copiedSubmitterUuids.forEach((uuid) => { + const name = data.submitters?.find((submitter) => submitter.uuid === uuid)?.name + + const submitter = this.template.submitters.find((s) => s.uuid === uuid) || + (name && this.template.submitters.find((s) => s.name.toLowerCase() === name.toLowerCase())) + + submitterUuidsMap[uuid] = (submitter || this.selectedSubmitter).uuid + }) + } data.items.forEach((item) => { const field = JSON.parse(JSON.stringify(item.field)) @@ -2515,7 +2529,7 @@ export default { const newField = fieldUuidIndex[field.uuid] || { ...field, uuid: v4(), - submitter_uuid: this.selectedSubmitter.uuid, + submitter_uuid: submitterUuidsMap[field.submitter_uuid] || this.selectedSubmitter.uuid, areas: [] }