var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var Unibase; (function (Unibase) { let Platform; (function (Platform) { let Automation; (function (Automation) { let Components; (function (Components) { class ExternalAttachments { constructor() { this.formPropArray = []; this.files_array = []; this.documentId = []; } jsFiles() { var jsfiles = ["platform/automation/managers/rulemanager.js", "platform/automation/enums/automationmode.js", "platform/automation/components/conditions.js", "platform/automation/components/contactselection.js", "platform/automation/requests/ruleaction.js", "platform/automation/requests/rulecondition.js", "platform/forms/components/formviewer/formviewer.js", "libs/parsley/parsley.min.js", "libs/querybuilder/query-builder.min.js", "libs/querybuilder/query-builder.standalone.min.js", "libs/querybuilder/query-builder.standalone.js", "libs/querybuilder/sql-parser.min.js", ]; return jsfiles; } cssFiles() { return []; } init(formpropertyid, ismultiple, validationdiv) { Unibase.Platform.Automation.Components.ExternalAttachments.Instance().getDocumentTypes(); Unibase.Platform.Automation.Components.ExternalAttachments.Instance().assignValues(formpropertyid, ismultiple, validationdiv); return Unibase.Platform.Automation.Components.ExternalAttachments.Instance().html(formpropertyid); } html(formpropertyid) { let html = ""; html = '

' + '

' + '
Drag and drop files here
' + '
Or
' + '

' + '
' + '' + '
' + '' + '' + '
' + '
' + '' + '
' + '
    ' + '' + '
'; return html; } fileDragNDropObj(formpropertyid) { var instance = this; var fileArray = []; fileArray = instance.files_array[formpropertyid]; for (var i = 0; i < instance.rmvFiles_array.length; i++) { var documentFileId = instance.rmvFiles_array[i].DocumentFileId; if (documentFileId != 0) { var fileReq = { FileId: documentFileId, FilePath: instance.rmvFiles_array[i].name, }; fileArray.push(fileReq); } } var fileObj = [...fileArray]; fileObj.unshift({ FileId: instance.documentId[formpropertyid], }); return fileObj; } dragNdrop(formpropertyid) { var instance = this; $('#paneldrag').on('dragover', function (e) { debugger; e.preventDefault(); e.stopPropagation(); }); $('#paneldrag').on('dragenter', function (e) { e.preventDefault(); e.stopPropagation(); }); $('#paneldrag').on('drop', function (e) { if (e.originalEvent.dataTransfer) { if (e.originalEvent.dataTransfer.files.length) { e.preventDefault(); e.stopPropagation(); if (instance.ismultiple == false) { instance.SingleUploadFile(e.originalEvent.dataTransfer.files, formpropertyid); } else if (instance.ismultiple == true) { instance.MultipleUploadFile(e.originalEvent.dataTransfer.files, formpropertyid); $("#file_" + formpropertyid).attr("multiple", "multiple"); } else { instance.SingleUploadFile(e.originalEvent.dataTransfer.files, formpropertyid); } } } }); $("#browse_" + formpropertyid + "").click(function () { $("#file_" + formpropertyid).click(); }); $("#file_" + formpropertyid + "").change(function () { Unibase.Platform.Automation.Components.ExternalAttachments.Instance().UploadFile(formpropertyid); }); window.addEventListener("dragover", function (e) { e = e || event; e.preventDefault(); }, false); window.addEventListener("drop", function (e) { e = e || event; e.preventDefault(); }, false); } UploadFile(formpropertyid) { var instance = this; if (instance.ismultiple == false) { $('#fileuploads_' + formpropertyid).find('.Selection').text("Selected File :"); $('#fileuploads_' + formpropertyid).find('.Selection').addClass("text-dark"); instance.SingleUploadFile(null, formpropertyid); } else if (instance.ismultiple == true) { instance.MultipleUploadFile(null, formpropertyid); $("#file_" + formpropertyid).attr("multiple", "multiple"); } else { instance.SingleUploadFile(null, formpropertyid); $('#fileuploads_' + formpropertyid).find('.Selection').text("Selected File :"); $('#fileuploads_' + formpropertyid).find('.Selection').addClass("text-dark"); } } SingleUploadFile(event, formpropertyid) { var instance = this; var fileUpload = $("#file_" + formpropertyid).get(0); var files = fileUpload.files; if (event != null) files = event; instance.singlefile = ""; var flag = 0; if (files.length > 0) { var html = ""; for (var i = 0; i < files.length; i++) { flag = 0; if (flag == 0) { instance.itemid++; var imgShow = ''; if (!files[i].type.match('image.*')) { if (files[i].type.match('pdf.*')) { imgShow = 'tenants/default/documenttypes/pdf.png'; } else if (files[i].type.match('wordprocessingml.*') || files[i].type.match('text.*')) { imgShow = 'tenants/default/documenttypes/word.png'; } else if (files[i].type.match('spreadsheetml.*')) { imgShow = 'tenants/default/documenttypes/excel.png'; } else if (files[i].type.match('excel.*')) { imgShow = 'tenants/default/documenttypes/excel.png'; } else imgShow = 'tenants/default/documenttypes/unknown.png'; } else { var tmppath = URL.createObjectURL(files[i]); imgShow = tmppath; } var filename = encodeURIComponent(files[i].name).replace(/\'/g, "%2E"); html = '
  • ' + '' + '' + '' + '' + '' + files[i].name + '' + '
  • '; instance.singlefile = files[i]; $('#ulselectedfiles_' + formpropertyid).html(html); $('#fileuploads_' + formpropertyid).find('.Selectedfile_').removeClass("hidden"); var item = { Files: instance.singlefile }; instance.getBase64(item).then(function (response) { var fileInfo = response; instance.files_array[formpropertyid] = []; instance.files_array[formpropertyid].push(fileInfo); $("#hf_file_" + formpropertyid).val("fileexists"); }); } } } } MultipleUploadFile(event, formpropertyid) { var instance = this; var errormsg = Unibase.Platform.Automation.Components.ExternalAttachments.Instance().validationdiv; var fileUpload = $("#file_" + formpropertyid).get(0); var files = fileUpload.files; if (event != null) files = event; var file = ""; var flag = 0; if (files.length > 0) { var xyz = ""; var html = ""; for (var i = 0; i < files.length; i++) { flag = 0; $("#ulselectedfiles_" + formpropertyid + " li").each(function (index, element) { if (index != 0 && flag == 0) { var filesSelected = $(this).find(".fileName").text(); if (files[i].name == filesSelected) { xyz += files[i].name + " "; MessageHelper.Instance().showError(xyz + " files already exist", "" + errormsg); flag = 1; } } }); if (flag == 0) { instance.itemid++; var imgShow = ''; var filename = files[i].name; var fileExt = files[i].name.split("."); if (files[i].type.match('image.*')) { var tmppath = URL.createObjectURL(files[i]); } var docData = instance.documenttypes.find(x => x.documenttypename == fileExt[fileExt.length - 1].toLowerCase()); if (docData != null) { if (docData.documentgroup == "Pdf") { imgShow = 'tenants/default/documenttypes/pdf.png'; } else if (docData.documentgroup == "Image") { imgShow = tmppath; } else if (docData.documentgroup == "Word") { imgShow = 'tenants/default/documenttypes/word.png'; } else if (docData.documentgroup == "Excel") { imgShow = 'tenants/default/documenttypes/excel.png'; } else if (docData.documentgroup == "Video") { imgShow = 'tenants/default/documenttypes/video.png'; } else if (docData.documentgroup == "Audio") { imgShow = 'tenants/default/documenttypes/audio.png'; } } else imgShow = 'tenants/default/documenttypes/unknown.png'; filename = encodeURIComponent(filename).replace(/\'/g, "%2E"); html = '
  • ' + '' + '' + '' + '' + '' + files[i].name + '' + '
  • '; $('#ulselectedfiles_' + formpropertyid).append(html); file = files[i]; $('#fileuploads_' + formpropertyid).find('.Selectedfile_').removeClass("hidden"); var item = { Files: file }; instance.getBase64(item).then(function (response) { var fileInfo = response; instance.files_array[formpropertyid].push(fileInfo); $("#hf_file_" + formpropertyid).val("fileexists"); }); } } } } assignValues(formpropertyid, ismultiple, validationdiv) { var instance = this; instance.itemid = 0; instance.files_array[formpropertyid] = []; instance.documentId[formpropertyid] = 0; instance.rmvFiles_array = []; instance.ismultiple = ismultiple; instance.singlefile = ""; instance.validationdiv = validationdiv; } getBase64(item) { return __awaiter(this, void 0, void 0, function* () { var fileName = ""; fileName = item.Files.DocumentFileName; if (fileName == undefined) fileName = item.Files.name; var refId = 0; if (Unibase.Themes.Providers.Detail_Settings.Instance().InputParameters.length > 0) { var installedAppId = Unibase.Themes.Providers.DetailHelper.installedAppId; refId = Number(Unibase.Themes.Providers.Detail_Settings.Instance().InputParameters.find(x => x.Key == "hf_" + installedAppId + "_recordid").Value); } let file = item.Files; let fileInfo = item.Files.name.split('.'); let fileType = ".unknown"; if (fileInfo.length > 0) { fileType = fileInfo[fileInfo.length - 1]; fileInfo.splice(fileInfo.length - 1, 1); fileName = fileInfo.join('.'); } return new Promise((resolve, reject) => { let content = ''; const reader = new FileReader(); reader.readAsDataURL(item.Files); reader.onloadend = function () { var base64String = reader.result.toString().replace(/^data:.+;base64,/, ''); var fileReq = { FileData: base64String, FileName: fileName, FileType: fileType, RefId: refId, ByteData: null }; resolve(fileReq); }; reader.onerror = function (e) { reject(e); }; }); }); } removeFile(formpropertyid, itemid, name, DocumentFileId) { name = decodeURIComponent(name.replace(/\%2E/g, "'")); var instance = this; instance.rmvFiles_array.push({ DocumentFileId: DocumentFileId, name: name }); $("#fileuploads_" + formpropertyid + "_" + itemid).addClass("hidden"); $("#fileuploads_" + formpropertyid + "_" + itemid).parents('.list-group-item').remove(); var fileIndex = instance.files_array[formpropertyid].findIndex(x => x.FileName == name); instance.files_array[formpropertyid].splice(fileIndex, 1); if ($('#ulselectedfiles_' + formpropertyid + ' li').length == 1) { $('#fileuploads_' + formpropertyid).find('.Selectedfile_').addClass("hidden"); } } getDocumentTypes() { Unibase.Platform.Helpers.FileCacheHelper.Instance().loadJsFileAsync("platform/files/managers/filemanager.js", function () { Unibase.Platform.Files.Managers.FileManager.Instance().getDocumentTypes().then(function (response) { Unibase.Platform.Automation.Components.ExternalAttachments.Instance().documenttypes = response.result; }); }); } getFiles(formpropertyid) { return Unibase.Platform.Automation.Components.ExternalAttachments.Instance().files_array[formpropertyid]; } bindEditFormDetails(formpropertyid, propval) { var instance = this; propval = propval.replaceAll("\\", "/"); var documentInfo = ""; documentInfo = JSON.parse(propval); instance.documentId[formpropertyid] = documentInfo.DocumentId; instance.bindData(documentInfo, formpropertyid); } bindData(documentInfo, formpropertyid) { var instance = this; var filesList = documentInfo; for (var i = 0; i < documentInfo.length; i++) { var isRequired = $("#file_" + formpropertyid).data("isrequired"); if (isRequired) { $("#file_" + formpropertyid).removeClass("required"); } var documentImage = ''; var imgSrc = ""; var DocumentGroup = ""; if (filesList[i].FileType != "") { if (filesList[i].FileType == "png" || filesList[i].FileType == "jpg") { DocumentGroup = "Image"; } else if (filesList[i].FileType == "xlsx" || filesList[i].FileType == "csv") { DocumentGroup = "Excel"; } else if (filesList[i].FileType == "pdf") { DocumentGroup = "Pdf"; } else if (filesList[i].FileType == "docx") { DocumentGroup = "Word"; } else if (filesList[i].FileType == "mp4") { DocumentGroup = "Video"; } else if (filesList[i].FileType == "mp3") { DocumentGroup = "Audio"; } else { DocumentGroup = "Unknown"; } } if (DocumentGroup != "") { if (DocumentGroup == "Unknown") documentImage = 'tenants/default/documenttypes/unknown.png'; else if (DocumentGroup == "Image") { var byteCharacters = atob(filesList[i].FileData); var byteNumbers = new Array(byteCharacters.length); for (var k = 0; k < byteCharacters.length; k++) { byteNumbers[k] = byteCharacters.charCodeAt(k); } var byteArray = new Uint8Array(byteNumbers); var fileTemp = new Blob([byteArray], { type: filesList[i].DocumentGroup + '/' + filesList[i].FileType + ';base64' }); imgSrc = URL.createObjectURL(fileTemp); documentImage = imgSrc; } else if (DocumentGroup == "Excel") documentImage = 'tenants/default/documenttypes/excel.png'; else if (DocumentGroup == "Pdf") documentImage = 'tenants/default/documenttypes/pdf.png'; else if (DocumentGroup == "Word") documentImage = 'tenants/default/documenttypes/word.png'; else if (DocumentGroup == "Video") documentImage = 'tenants/default/documenttypes/video.png'; else if (DocumentGroup == "Audio") documentImage = 'tenants/default/documenttypes/audio.png'; } instance.itemid++; var docFileName = filesList[i].FileName; var name = docFileName; var html = '
  • ' + '' + '' + '' + '' + '' + docFileName + '' + '
  • '; $('#ulselectedfiles_' + formpropertyid).append(html); $('#fileuploads_' + formpropertyid).find('.Selectedfile_').removeClass("hidden"); instance.files_array[formpropertyid].push(filesList[i]); } } static Instance() { if (this.instance === undefined) { this.instance = new ExternalAttachments(); } return this.instance; } } Components.ExternalAttachments = ExternalAttachments; })(Components = Automation.Components || (Automation.Components = {})); })(Automation = Platform.Automation || (Platform.Automation = {})); })(Platform = Unibase.Platform || (Unibase.Platform = {})); })(Unibase || (Unibase = {}));