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;
-
- var url = [
- BWA.api.url,
- '/Upload?SiteId={0}&FileCategoryId={1}'.formati(BWA.UserInfo.SiteId(), categoryId)
- ].join('');
- var isTempFile = false;
- var dropzone = new Dropzone(id, {
-
- MaxFileCountCheck: function () {
- utils.toast.show('업로드 파일을 추가 할 수 없습니다. 기존파일을 삭제하고 시도해 주세요.');
- },
- startLoadFileCount: 0,
-
- url: url,
- maxFilesize: 10,
- maxFiles: (_.isUndefined(options.maxFiles) === false) ? options.maxFiles : 1,
- uploadMultiple: false,
- autoProcessQueue: false,
- 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) {
- if (_.isUndefined(file.FileId)) return;
- var promise;
- if (_.isUndefined(handleRemoveBeforePromise)) {
- promise = BWA.db.CmFile.remove(file);
- }
- else {
- promise = handleRemoveBeforePromise().then(function () {
- return BWA.db.CmFile.remove(file);
- });
- }
- promise.done(function () {
-
- resetUploadedFileInfo(file);
- if (_.isUndefined(handleRemovedFile) === false) {
- handleRemovedFile();
- }
-
- });
-
-
-
-
- })
- dropzone.resetUploadedFileInfo = function () {
- resetUploadedFileInfo(uploadedFileInfo);
- isTempFile = false;
-
-
-
- };
- 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.emit('addedfile', {
- name: data.Name,
- size: data.FileSize
- });
- dropZone.setTempFileFlag(false);
-
- options.startLoadFileCount = 1;
- });
- }
- }
- }
- }, 100);
- }
- else {
- if (timer) {
- clearInterval(timer);
- timer = null;
- }
- if (dropZone) {
- dropZone.dispose();
- }
- dropZone = null;
- handleReleaseDropZone();
- }
- };
- }
-
-
-
-
-
-
-
-
-
-
- };
- });
|