From 774e8926e37b7f30910054a48988c400e953e681 Mon Sep 17 00:00:00 2001 From: mjkhan21 Date: Tue, 1 Jul 2025 13:33:01 +0900 Subject: [PATCH] =?UTF-8?q?function=20getBundles(..)=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../resources/js/base/upload-support.js | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/main/webapp/resources/js/base/upload-support.js b/src/main/webapp/resources/js/base/upload-support.js index 45e6fba..9c4f27e 100644 --- a/src/main/webapp/resources/js/base/upload-support.js +++ b/src/main/webapp/resources/js/base/upload-support.js @@ -126,6 +126,29 @@ var download = { } }; +function getBundles(array, keymapper, size = 50) { + let byKey = array.reduce((result, item) => { + let key = keymapper(item), + items = result[key]; + if (!items) + result[key] = items = []; + items.push(item); + return result; + }, {}), + bundle = []; + bundles = []; + for (let items of Object.values(byKey)) { + bundle = bundle.concat(items); + if (bundle.length < size) continue; + + bundles.push([].concat(bundle)); + bundle.splice(0); + } + if (bundle.length > 0) + bundles.push(bundle); + return bundles; +} + function upload(options) { options.enctype = "multipart/form-data"; options.processData = options.contentType = false;