123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230 |
- $(function () {
- 'use strict';
- function resetUploadedFileInfo(fileInfo) {
- fileInfo.SiteId = undefined;
- fileInfo.FileId = undefined;
- }
- window.BWA.DropZone = {
- create: function (options) {
- var id = options.id,
- categoryId = options.categoryId,
- handleSuccess = options.handleSuccess,
- handleRemovedFile = options.handleRemovedFile,
- handleRemoveBeforePromise = options.handleRemoveBeforePromise,
- uploadedFileInfo = options.uploadedFileInfo; // {},
- //MaxFileCountCheck = options.MaxFileCountCheck
- var url = [
- BWA.api.url,
- '/Upload?SiteId={0}&FileCategoryId={1}'.formati(BWA.UserInfo.SiteId(), categoryId)
- ].join('');
- var isTempFile = false;
- var dropzone = new Dropzone(id, {
- //hcLee 2016 03 24
- MaxFileCountCheck: function () {
- utils.toast.show('업로드 파일을 추가 할 수 없습니다. 기존파일을 삭제하고 시도해 주세요.');
- },
- startLoadFileCount: 0,
- //hcLee 2016 03 24
- url: url,
- maxFilesize: 10, //초기 1000, 08.12: 10MB
- maxFiles: (_.isUndefined(options.maxFiles) === false) ? options.maxFiles : 1,
- uploadMultiple: false,
- autoProcessQueue: false,//2019-10-14 변경
- addRemoveLinks: true,
- thumbnail: function () {
- },
- clickable: id,
- dictRemoveFile: '파일 삭제',
- dictFileTooBig: '파일이 너무 큽니다(최대 10MB).',
- dictResponseError: '{{statusCode}} 코드를 서버에서 응답했습니다.',
- dictCancelUpload: '업로드 취소',
- dictCancelUploadConfirmation: '정말로 업로드를 취소하시겠습니까?',
- dictMaxFilesExceeded: '업로드 파일을 추가 할 수 없습니다. 기존파일을 삭제하고 시도해 주세요.',
- dictDefaultMessage: '파일 끌어다 놓기 혹은 클릭',
- dictFallbackMessage: '브라우저에서 "파일 끌어다 놓기 기능"을 지원하지 않습니다.',
- });
- dropzone.on('success', function (file, resFileInfo, formData) {
- uploadedFileInfo.SiteId = resFileInfo.SiteId;
- uploadedFileInfo.FileId = resFileInfo.FileId;
- options.startLoadFileCount = 1;
- isTempFile = true;
- if (_.isUndefined(handleSuccess) === false) {
- handleSuccess(uploadedFileInfo);
- }
- });
- dropzone.on('error', function (file, errorMessage, xhr) {
- isTempFile = false;
- resetUploadedFileInfo(uploadedFileInfo);
- if (_.isUndefined(handleRemovedFile) === false) {
- handleRemovedFile();
- }
- utils.toast.show('업로드 작업이 실패하였습니다: ' + errorMessage, 'error');
- });
- dropzone.on('removedfile', function (file) { ////2019-10-14 변경
- if (_.isUndefined(file.FileId)) return;//uploadedFileInfo
- var promise;
- if (_.isUndefined(handleRemoveBeforePromise)) {
- promise = BWA.db.CmFile.remove(file);//uploadedFileInfo
- }
- else {
- promise = handleRemoveBeforePromise().then(function () {
- return BWA.db.CmFile.remove(file);//uploadedFileInfo
- });
- }
- promise.done(function () {
- //options.startLoadFileCount = 0;
- resetUploadedFileInfo(file);//uploadedFileInfo
- if (_.isUndefined(handleRemovedFile) === false) {
- handleRemovedFile();
- }
- //utils.toast.show('파일을 삭제하였습니다.');
- });
- //resetUploadedFileInfo(uploadedFileInfo);
- //if (_.isUndefined(handleRemovedFile) === false) {
- // handleRemovedFile();
- //}
- })
- dropzone.resetUploadedFileInfo = function () {
- resetUploadedFileInfo(uploadedFileInfo);
- isTempFile = false;
- // hcLee 2016 03 24
- // options.startLoadFileCount = 0;
- //removeAllFiles();
- };
- dropzone.dispose = function () {
- if (_.isUndefined(uploadedFileInfo.FileId) === false && isTempFile) {
- BWA.db.CmFile.remove(uploadedFileInfo).done(function () {
- resetUploadedFileInfo(uploadedFileInfo);
- isTempFile = false;
- });
- }
- };
- dropzone.setTempFileFlag = function (value) {
- isTempFile = value;
- };
- dropzone.isTempFile = function () {
- return isTempFile;
- };
- return dropzone;
- },
- setupDropZoneEditModeSubscribeInPopupFunc: function (options) {
- var dropZoneSelector = options.dropZoneSelector,
- dataViewModel = options.dataViewModel,
- categoryId = options.categoryId,
- tableName = options.tableName,
- fileIdFieldName = options.fileIdFieldName,
- handleAllocateDropZone = options.handleAllocateDropZone,
- handleReleaseDropZone = options.handleReleaseDropZone;
- var timer = null;
- var dropZone = null;
- var uploadedFileInfo = {};
- return function (value) {
- if (value) {
- if (timer) {
- clearInterval(timer);
- }
- timer = setInterval(function () {
- if ($(dropZoneSelector).length) {
- if (_.isNull(dropZone)) {
- dropZone = BWA.DropZone.create({
- id: dropZoneSelector,
- categoryId: categoryId,
- uploadedFileInfo: uploadedFileInfo,
- handleRemoveBeforePromise: function () {
- var keys = BWA.db.extractKeysObject(tableName, dataViewModel);
- var valueObject = {};
- valueObject[fileIdFieldName] = null;
- var promise = BWA.db[tableName].update(keys, valueObject);
- promise.then(function () {
- dataViewModel[fileIdFieldName](null);
- });
- return promise;
- },
- handleSuccess: function (fileInfo) {
- dataViewModel[fileIdFieldName](fileInfo.FileId);
- },
- handleRemovedFile: function () {
- dropZone.resetUploadedFileInfo();
- dataViewModel[fileIdFieldName](null);
- },
- });
- handleAllocateDropZone(dropZone);
- uploadedFileInfo.SiteId = dataViewModel.SiteId();
- uploadedFileInfo.FileId = dataViewModel[fileIdFieldName]();
- if (uploadedFileInfo.FileId) {
- BWA.db.CmFile.byKey(uploadedFileInfo).done(function (data) {
- //dropZone.removeAllFiles();
- dropZone.emit('addedfile', {
- name: data.Name,
- size: data.FileSize
- });
- dropZone.setTempFileFlag(false);
- //dropZone.options.maxFiles = 0; // 이게 있으면 삭제후 다시 업로드가 안 된다.
- options.startLoadFileCount = 1;
- });
- }
- }
- }
- }, 100);
- }
- else {
- if (timer) {
- clearInterval(timer);
- timer = null;
- }
- if (dropZone) {
- dropZone.dispose();
- }
- dropZone = null;
- handleReleaseDropZone();
- }
- };
- }
- // uploadedFileInfo에 FileId가 남아있다는 의미는 업로드는 성공했으나, 사용되지 않음을 의미한다.
- // 그러므로 업로드 성공후 CmFacility나 FmsDrawingHistory 등에 연결했으면 uploadedFileInfo를 reset 해야 한다.
- // 사용하지 않는다?
- //dispose: function(uploadedFileInfo, dropzone) {
- // if (_.isUndefined(uploadedFileInfo.FileId) === false) {
- // BWA.db.CmFile.remove(uploadedFileInfo).done(function() {
- // resetUploadedFileInfo(uploadedFileInfo);
- // });
- // }
- //}
- };
- });
|