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 = {}));