diff --git a/src/main/webapp/WEB-INF/jsp/fims/crdn/crdn-cctv.jsp b/src/main/webapp/WEB-INF/jsp/fims/crdn/crdn-cctv.jsp index 4fbfeef..b3d23ff 100644 --- a/src/main/webapp/WEB-INF/jsp/fims/crdn/crdn-cctv.jsp +++ b/src/main/webapp/WEB-INF/jsp/fims/crdn/crdn-cctv.jsp @@ -104,7 +104,7 @@ dirSet.onCurrentChange = (dataItem) => { $C.$findn("dir-list").find("tbody").setCurrentRow(dataIndex); }; -fileSet.onDatasetChange = () => { +fileSet.onDatasetChange = fileSet.onRemove = () => { var t = $C.getGridTemplate("file-list"), trs = Apply.fromDataset.getTbody(fileSet, t.found, t.notFound, t.replacer), length = fileSet.length; @@ -131,50 +131,81 @@ $C.getFiles = dir => { fileSet.setData([]); }; -$C.createCrdn = () => { - let current = dirSet.getCurrent("item"), - dir = current.data.name; - dialog.alert({ - content: current.getValue("name") + " 디렉토리의 파일로 단속을 등록하시겠습니까?", - onOK: () => { +let cctv = { + dir: null, + doExempt: null, + upload: async (filenames) => { + return new Promise((resolve) => { ajax.post({ url : wctx.url("/crdn/crdn05/020/upload.do"), + silent: true, data : { taskSeCd: "${taskSeCd}", - doExempt: $C.findn('doExempt').checked, - dirs: dir + doExempt: cctv.doExempt, + dirs: cctv.dir, + filenames: filenames.join(",") }, - success : (resp) => { - let content = ""; - dialog.alert({ - content: content, - onOK: () => {}, - onClose: () => $C.getFiles(dir) - }); - - return; - if (resp.saved) { - $C.getFiles(dir); - if(resp.alertMessage) - dialog.alert(resp.alertMessage); - else - dialog.alert("등록이 완료됐습니다."); - } else { - dialog.alert(resp.failReason); - } - } - }); + success: resp => resolve(resp) + }) + }); + }, + request: async () => { + let current = dirSet.getCurrent("item"), + keymapper = file => { + let str = file.name, + pos = str.lastIndexOf("_"); + return str.substring(0, pos); + }, + result = { + received: 0, + divided: 0, + normal: 0, + malformed: 0, + success: 0, + duplicates: 0 + }, + bundles = getBundles(fileSet.getDataset(), keymapper); + + cctv.dir = current.data.name; + cctv.doExempt = $C.findn('doExempt').checked; + + wait(); + for (let i = 0; i < bundles.length; ++i) { + let filenames = bundles[i].map(info => info.name), + resp = await cctv.upload(filenames); + for (let key in result) { + result[key] += resp[key]; + } + fileSet.erase(filenames); } + wait(false); + + let content = ""; + dialog.alert({ + content: content, + onOK: () => {}, + onClose: () => $C.getFiles(cctv.dir) + }); + + } +}; + +$C.createCrdn = () => { + let current = dirSet.getCurrent("item"), + dir = current.data.name; + dialog.alert({ + content: current.getValue("name") + " 디렉토리의 파일(들)로 단속을 등록하시겠습니까?", + onOK: () => {cctv.request();} }); } diff --git a/src/main/webapp/WEB-INF/jsp/fims/crdn/crdn-local.jsp b/src/main/webapp/WEB-INF/jsp/fims/crdn/crdn-local.jsp index f73fe62..e780f5b 100644 --- a/src/main/webapp/WEB-INF/jsp/fims/crdn/crdn-local.jsp +++ b/src/main/webapp/WEB-INF/jsp/fims/crdn/crdn-local.jsp @@ -151,8 +151,76 @@ $L.clickParsedInfoList = (dataIndex) => { uploadSet.setCurrent(dataIndex); }; +let localFiles = { + doExempt: null, + upload: async (files) => { + return new Promise((resolve) => { + upload({ + url : wctx.url("/crdn/crdn05/020/upload.do"), + silent: true, + data : { + taskSeCd: "${taskSeCd}", + doExempt: localFiles.doExempt, + uploadFiles: files + }, + success: resp => resolve(resp) + }) + }); + }, + request: async () => { + let keymapper = file => { + let str = file.name, + pos = str.lastIndexOf("_"); + return str.substring(0, pos); + }, + result = { + received: 0, + divided: 0, + normal: 0, + malformed: 0, + success: 0, + duplicates: 0 + }, + bundles = getBundles(uploadSet.getDataset(), keymapper); + + localFiles.doExempt = $L.findn('doExempt').checked; -$L.createCrdn = () => + wait(); + for (let i = 0; i < bundles.length; ++i) { + let files = bundles[i], + resp = await localFiles.upload(files); + for (let key in result) { + result[key] += resp[key]; + } + uploadSet.erase(files.map(file => file.id)); + } + wait(false); + + let content = ""; + dialog.alert({ + content: content, + onOK: () => {uploadSet.clear();}, + }); + + } +}; + +$L.createCrdn = () => { + dialog.alert({ + content: "선택한 파일(들)로 단속을 등록하시겠습니까?", + onOK: () => {localFiles.request();} + }); +<%-- upload({ url : wctx.url("/crdn/crdn05/020/upload.do"), data : { @@ -162,13 +230,13 @@ $L.createCrdn = () => }, success : (resp) => { let content = ""; @@ -190,6 +258,8 @@ $L.createCrdn = () => } } }); +--%> +}; $L.deleteFile = () => { var current = uploadSet.getCurrent(); diff --git a/src/main/webapp/WEB-INF/jsp/fims/crdn/crdn05020-info.jsp b/src/main/webapp/WEB-INF/jsp/fims/crdn/crdn05020-info.jsp index d722f27..115bebc 100644 --- a/src/main/webapp/WEB-INF/jsp/fims/crdn/crdn05020-info.jsp +++ b/src/main/webapp/WEB-INF/jsp/fims/crdn/crdn05020-info.jsp @@ -26,7 +26,7 @@ var pageName = null, dirSet = new Dataset({ formats: {name: dateFormat} }), - fileSet = new Dataset(), + fileSet = new Dataset({keymapper: info => info.name}), uploadSet = uploadSupport("input[name='uploadFiles']"); $(document).ready(function(){ ${scriptCctv}