Built files from Bizgaze WebServer
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

externalattachments.js 30KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448
  1. var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
  2. function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
  3. return new (P || (P = Promise))(function (resolve, reject) {
  4. function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
  5. function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
  6. function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
  7. step((generator = generator.apply(thisArg, _arguments || [])).next());
  8. });
  9. };
  10. var Unibase;
  11. (function (Unibase) {
  12. let Platform;
  13. (function (Platform) {
  14. let Automation;
  15. (function (Automation) {
  16. let Components;
  17. (function (Components) {
  18. class ExternalAttachments {
  19. constructor() {
  20. this.formPropArray = [];
  21. this.files_array = [];
  22. this.documentId = [];
  23. }
  24. jsFiles() {
  25. var jsfiles = ["platform/automation/managers/rulemanager.js",
  26. "platform/automation/enums/automationmode.js",
  27. "platform/automation/components/conditions.js",
  28. "platform/automation/components/contactselection.js",
  29. "platform/automation/requests/ruleaction.js",
  30. "platform/automation/requests/rulecondition.js",
  31. "platform/forms/components/formviewer/formviewer.js",
  32. "libs/parsley/parsley.min.js",
  33. "libs/querybuilder/query-builder.min.js",
  34. "libs/querybuilder/query-builder.standalone.min.js",
  35. "libs/querybuilder/query-builder.standalone.js",
  36. "libs/querybuilder/sql-parser.min.js",
  37. ];
  38. return jsfiles;
  39. }
  40. cssFiles() {
  41. return [];
  42. }
  43. init(formpropertyid, ismultiple, validationdiv) {
  44. Unibase.Platform.Automation.Components.ExternalAttachments.Instance().getDocumentTypes();
  45. Unibase.Platform.Automation.Components.ExternalAttachments.Instance().assignValues(formpropertyid, ismultiple, validationdiv);
  46. return Unibase.Platform.Automation.Components.ExternalAttachments.Instance().html(formpropertyid);
  47. }
  48. html(formpropertyid) {
  49. let html = "";
  50. html = '<div id="paneldrag" class="col-sm-12 mt-20 drag"><div class="col-sm-12" id="panel"><p>' +
  51. '<div class="text-center"><i class="fa fa-cloud-download fa-3x" aria-hidden="true"></i></div>' +
  52. '<div class="text-center" id="drag" style="font-size:medium">Drag and drop files here</div>' +
  53. '<div class="text-center">Or</div>' +
  54. '</p></div>' +
  55. '<div class="row mb-10" id="UploadDiv_' + formpropertyid + '">' +
  56. '<input type="text" class="hidden" id="hf_file_' + formpropertyid + '" value=""/>' +
  57. '<div class="upload-btn-wrapper text-center container">' +
  58. '<input id="file_' + formpropertyid + '" title="" type="file" onclick="this.value=null;" class="hidden d-none fileUpload_ form-control value-control" data-isrequired=" " data-propertyname=" " data-isdefault=" " data-propdoctypename="" data-required="" data-regularexp="" data-validatemsg="" data-formdata="" value="Unibase.Forms.Controls.FileDragNDrop.Instance().fileDragNDropObj(' + formpropertyid + ');"/>' +
  59. '<input type="button" value="Browse" class="btn btn-primary btn-lg center-block" id="browse_' + formpropertyid + '" />' +
  60. '</div></div></div>' +
  61. '<div class="row ml-15 fileuploads_ filename" id="fileuploads_' + formpropertyid + '"><div class="row col-sm-12 ml-10 mt-10 pull-center thumb_doc"><div class="col-sm-12 row pl-0"><div class="input-group">' +
  62. '<span class="Selectedfile_ text-dark hidden"><h5 class="Selection mb-10 mt-10">Selected Files :</h5> <span class="Selectedfile"></span></span>' +
  63. '</div></div><div class="row col-sm-12 pl-0 pr-0">' +
  64. '<ul id="ulselectedfiles_' + formpropertyid + '" class="list-group mb-n mt-n-15 no-border ulselectedfiles col-sm-12 pl-0 pr-0">' +
  65. '<li class="hidden no-border"></li>' +
  66. '</ul></div></div></div>';
  67. return html;
  68. }
  69. fileDragNDropObj(formpropertyid) {
  70. var instance = this;
  71. var fileArray = [];
  72. fileArray = instance.files_array[formpropertyid];
  73. for (var i = 0; i < instance.rmvFiles_array.length; i++) {
  74. var documentFileId = instance.rmvFiles_array[i].DocumentFileId;
  75. if (documentFileId != 0) {
  76. var fileReq = {
  77. FileId: documentFileId,
  78. FilePath: instance.rmvFiles_array[i].name,
  79. };
  80. fileArray.push(fileReq);
  81. }
  82. }
  83. var fileObj = [...fileArray];
  84. fileObj.unshift({
  85. FileId: instance.documentId[formpropertyid],
  86. });
  87. return fileObj;
  88. }
  89. dragNdrop(formpropertyid) {
  90. var instance = this;
  91. $('#paneldrag').on('dragover', function (e) {
  92. debugger;
  93. e.preventDefault();
  94. e.stopPropagation();
  95. });
  96. $('#paneldrag').on('dragenter', function (e) {
  97. e.preventDefault();
  98. e.stopPropagation();
  99. });
  100. $('#paneldrag').on('drop', function (e) {
  101. if (e.originalEvent.dataTransfer) {
  102. if (e.originalEvent.dataTransfer.files.length) {
  103. e.preventDefault();
  104. e.stopPropagation();
  105. if (instance.ismultiple == false) {
  106. instance.SingleUploadFile(e.originalEvent.dataTransfer.files, formpropertyid);
  107. }
  108. else if (instance.ismultiple == true) {
  109. instance.MultipleUploadFile(e.originalEvent.dataTransfer.files, formpropertyid);
  110. $("#file_" + formpropertyid).attr("multiple", "multiple");
  111. }
  112. else {
  113. instance.SingleUploadFile(e.originalEvent.dataTransfer.files, formpropertyid);
  114. }
  115. }
  116. }
  117. });
  118. $("#browse_" + formpropertyid + "").click(function () {
  119. $("#file_" + formpropertyid).click();
  120. });
  121. $("#file_" + formpropertyid + "").change(function () {
  122. Unibase.Platform.Automation.Components.ExternalAttachments.Instance().UploadFile(formpropertyid);
  123. });
  124. window.addEventListener("dragover", function (e) {
  125. e = e || event;
  126. e.preventDefault();
  127. }, false);
  128. window.addEventListener("drop", function (e) {
  129. e = e || event;
  130. e.preventDefault();
  131. }, false);
  132. }
  133. UploadFile(formpropertyid) {
  134. var instance = this;
  135. if (instance.ismultiple == false) {
  136. $('#fileuploads_' + formpropertyid).find('.Selection').text("Selected File :");
  137. $('#fileuploads_' + formpropertyid).find('.Selection').addClass("text-dark");
  138. instance.SingleUploadFile(null, formpropertyid);
  139. }
  140. else if (instance.ismultiple == true) {
  141. instance.MultipleUploadFile(null, formpropertyid);
  142. $("#file_" + formpropertyid).attr("multiple", "multiple");
  143. }
  144. else {
  145. instance.SingleUploadFile(null, formpropertyid);
  146. $('#fileuploads_' + formpropertyid).find('.Selection').text("Selected File :");
  147. $('#fileuploads_' + formpropertyid).find('.Selection').addClass("text-dark");
  148. }
  149. }
  150. SingleUploadFile(event, formpropertyid) {
  151. var instance = this;
  152. var fileUpload = $("#file_" + formpropertyid).get(0);
  153. var files = fileUpload.files;
  154. if (event != null)
  155. files = event;
  156. instance.singlefile = "";
  157. var flag = 0;
  158. if (files.length > 0) {
  159. var html = "";
  160. for (var i = 0; i < files.length; i++) {
  161. flag = 0;
  162. if (flag == 0) {
  163. instance.itemid++;
  164. var imgShow = '';
  165. if (!files[i].type.match('image.*')) {
  166. if (files[i].type.match('pdf.*')) {
  167. imgShow = 'tenants/default/documenttypes/pdf.png';
  168. }
  169. else if (files[i].type.match('wordprocessingml.*') || files[i].type.match('text.*')) {
  170. imgShow = 'tenants/default/documenttypes/word.png';
  171. }
  172. else if (files[i].type.match('spreadsheetml.*')) {
  173. imgShow = 'tenants/default/documenttypes/excel.png';
  174. }
  175. else if (files[i].type.match('excel.*')) {
  176. imgShow = 'tenants/default/documenttypes/excel.png';
  177. }
  178. else
  179. imgShow = 'tenants/default/documenttypes/unknown.png';
  180. }
  181. else {
  182. var tmppath = URL.createObjectURL(files[i]);
  183. imgShow = tmppath;
  184. }
  185. var filename = encodeURIComponent(files[i].name).replace(/\'/g, "%2E");
  186. html = '<li class="list-group-item b-a clear pl-0 pr-0" style="border: none !important">' +
  187. '<span id="fileuploads_' + formpropertyid + '_' + instance.itemid + '" class="block fileuploads_' + instance.itemid + ' filename">' +
  188. '<span class="pull-left">' +
  189. '<span class="fa fa-trash-o fa-lg text-danger mr-15" style="cursor:pointer" href="javascript:;" onclick="javascript:Unibase.Platform.Automation.Components.ExternalAttachments.Instance().removeFile(\'' + formpropertyid + '\',' + instance.itemid + ',\'' + filename + '\'' + ',' + 0 + ');" title = "Click to Delete"></span>' +
  190. '<img style="height:35px;width:35px;vertical-align:middle;" onerror="ReloadImage(event)" alt="" src="' + imgShow + '">' +
  191. '<span class="ml-20 fileName">' + files[i].name + '</span>' +
  192. '</span></span></li>';
  193. instance.singlefile = files[i];
  194. $('#ulselectedfiles_' + formpropertyid).html(html);
  195. $('#fileuploads_' + formpropertyid).find('.Selectedfile_').removeClass("hidden");
  196. var item = { Files: instance.singlefile };
  197. instance.getBase64(item).then(function (response) {
  198. var fileInfo = response;
  199. instance.files_array[formpropertyid] = [];
  200. instance.files_array[formpropertyid].push(fileInfo);
  201. $("#hf_file_" + formpropertyid).val("fileexists");
  202. });
  203. }
  204. }
  205. }
  206. }
  207. MultipleUploadFile(event, formpropertyid) {
  208. var instance = this;
  209. var errormsg = Unibase.Platform.Automation.Components.ExternalAttachments.Instance().validationdiv;
  210. var fileUpload = $("#file_" + formpropertyid).get(0);
  211. var files = fileUpload.files;
  212. if (event != null)
  213. files = event;
  214. var file = "";
  215. var flag = 0;
  216. if (files.length > 0) {
  217. var xyz = "";
  218. var html = "";
  219. for (var i = 0; i < files.length; i++) {
  220. flag = 0;
  221. $("#ulselectedfiles_" + formpropertyid + " li").each(function (index, element) {
  222. if (index != 0 && flag == 0) {
  223. var filesSelected = $(this).find(".fileName").text();
  224. if (files[i].name == filesSelected) {
  225. xyz += files[i].name + " ";
  226. MessageHelper.Instance().showError(xyz + " files already exist", "" + errormsg);
  227. flag = 1;
  228. }
  229. }
  230. });
  231. if (flag == 0) {
  232. instance.itemid++;
  233. var imgShow = '';
  234. var filename = files[i].name;
  235. var fileExt = files[i].name.split(".");
  236. if (files[i].type.match('image.*')) {
  237. var tmppath = URL.createObjectURL(files[i]);
  238. }
  239. var docData = instance.documenttypes.find(x => x.documenttypename == fileExt[fileExt.length - 1].toLowerCase());
  240. if (docData != null) {
  241. if (docData.documentgroup == "Pdf") {
  242. imgShow = 'tenants/default/documenttypes/pdf.png';
  243. }
  244. else if (docData.documentgroup == "Image") {
  245. imgShow = tmppath;
  246. }
  247. else if (docData.documentgroup == "Word") {
  248. imgShow = 'tenants/default/documenttypes/word.png';
  249. }
  250. else if (docData.documentgroup == "Excel") {
  251. imgShow = 'tenants/default/documenttypes/excel.png';
  252. }
  253. else if (docData.documentgroup == "Video") {
  254. imgShow = 'tenants/default/documenttypes/video.png';
  255. }
  256. else if (docData.documentgroup == "Audio") {
  257. imgShow = 'tenants/default/documenttypes/audio.png';
  258. }
  259. }
  260. else
  261. imgShow = 'tenants/default/documenttypes/unknown.png';
  262. filename = encodeURIComponent(filename).replace(/\'/g, "%2E");
  263. html = '<li class="list-group-item b-a clear pl-0 pr-0" style="border: none !important">' +
  264. '<span id="fileuploads_' + formpropertyid + '_' + instance.itemid + '" class="block fileuploads_' + instance.itemid + ' filename">' +
  265. '<span class="pull-left col-sm-12 pl-0 pr-0">' +
  266. '<span class="fa fa-trash-o fa-lg text-danger mr-15" style="cursor:pointer" ; href="javascript:;" onclick="javascript:Unibase.Platform.Automation.Components.ExternalAttachments.Instance().removeFile(\'' + formpropertyid + '\',' + instance.itemid + ',\'' + filename + '\'' + ',' + 0 + ');" title="Click to Delete"></span>' +
  267. '<img class="mr-20" style="height:35px;width:35px;vertical-align:middle;" onerror="ReloadImage(event)" alt="" src="' + imgShow + '">' +
  268. '<span class="fileName">' + files[i].name + '</span>' +
  269. '</span></span></li>';
  270. $('#ulselectedfiles_' + formpropertyid).append(html);
  271. file = files[i];
  272. $('#fileuploads_' + formpropertyid).find('.Selectedfile_').removeClass("hidden");
  273. var item = { Files: file };
  274. instance.getBase64(item).then(function (response) {
  275. var fileInfo = response;
  276. instance.files_array[formpropertyid].push(fileInfo);
  277. $("#hf_file_" + formpropertyid).val("fileexists");
  278. });
  279. }
  280. }
  281. }
  282. }
  283. assignValues(formpropertyid, ismultiple, validationdiv) {
  284. var instance = this;
  285. instance.itemid = 0;
  286. instance.files_array[formpropertyid] = [];
  287. instance.documentId[formpropertyid] = 0;
  288. instance.rmvFiles_array = [];
  289. instance.ismultiple = ismultiple;
  290. instance.singlefile = "";
  291. instance.validationdiv = validationdiv;
  292. }
  293. getBase64(item) {
  294. return __awaiter(this, void 0, void 0, function* () {
  295. var fileName = "";
  296. fileName = item.Files.DocumentFileName;
  297. if (fileName == undefined)
  298. fileName = item.Files.name;
  299. var refId = 0;
  300. if (Unibase.Themes.Providers.Detail_Settings.Instance().InputParameters.length > 0) {
  301. var installedAppId = Unibase.Themes.Providers.DetailHelper.installedAppId;
  302. refId = Number(Unibase.Themes.Providers.Detail_Settings.Instance().InputParameters.find(x => x.Key == "hf_" + installedAppId + "_recordid").Value);
  303. }
  304. let file = item.Files;
  305. let fileInfo = item.Files.name.split('.');
  306. let fileType = ".unknown";
  307. if (fileInfo.length > 0) {
  308. fileType = fileInfo[fileInfo.length - 1];
  309. fileInfo.splice(fileInfo.length - 1, 1);
  310. fileName = fileInfo.join('.');
  311. }
  312. return new Promise((resolve, reject) => {
  313. let content = '';
  314. const reader = new FileReader();
  315. reader.readAsDataURL(item.Files);
  316. reader.onloadend = function () {
  317. var base64String = reader.result.toString().replace(/^data:.+;base64,/, '');
  318. var fileReq = {
  319. FileData: base64String,
  320. FileName: fileName,
  321. FileType: fileType,
  322. RefId: refId,
  323. ByteData: null
  324. };
  325. resolve(fileReq);
  326. };
  327. reader.onerror = function (e) {
  328. reject(e);
  329. };
  330. });
  331. });
  332. }
  333. removeFile(formpropertyid, itemid, name, DocumentFileId) {
  334. name = decodeURIComponent(name.replace(/\%2E/g, "'"));
  335. var instance = this;
  336. instance.rmvFiles_array.push({ DocumentFileId: DocumentFileId, name: name });
  337. $("#fileuploads_" + formpropertyid + "_" + itemid).addClass("hidden");
  338. $("#fileuploads_" + formpropertyid + "_" + itemid).parents('.list-group-item').remove();
  339. var fileIndex = instance.files_array[formpropertyid].findIndex(x => x.FileName == name);
  340. instance.files_array[formpropertyid].splice(fileIndex, 1);
  341. if ($('#ulselectedfiles_' + formpropertyid + ' li').length == 1) {
  342. $('#fileuploads_' + formpropertyid).find('.Selectedfile_').addClass("hidden");
  343. }
  344. }
  345. getDocumentTypes() {
  346. Unibase.Platform.Helpers.FileCacheHelper.Instance().loadJsFileAsync("platform/files/managers/filemanager.js", function () {
  347. Unibase.Platform.Files.Managers.FileManager.Instance().getDocumentTypes().then(function (response) {
  348. Unibase.Platform.Automation.Components.ExternalAttachments.Instance().documenttypes = response.result;
  349. });
  350. });
  351. }
  352. getFiles(formpropertyid) {
  353. return Unibase.Platform.Automation.Components.ExternalAttachments.Instance().files_array[formpropertyid];
  354. }
  355. bindEditFormDetails(formpropertyid, propval) {
  356. var instance = this;
  357. propval = propval.replaceAll("\\", "/");
  358. var documentInfo = "";
  359. documentInfo = JSON.parse(propval);
  360. instance.documentId[formpropertyid] = documentInfo.DocumentId;
  361. instance.bindData(documentInfo, formpropertyid);
  362. }
  363. bindData(documentInfo, formpropertyid) {
  364. var instance = this;
  365. var filesList = documentInfo;
  366. for (var i = 0; i < documentInfo.length; i++) {
  367. var isRequired = $("#file_" + formpropertyid).data("isrequired");
  368. if (isRequired) {
  369. $("#file_" + formpropertyid).removeClass("required");
  370. }
  371. var documentImage = '';
  372. var imgSrc = "";
  373. var DocumentGroup = "";
  374. if (filesList[i].FileType != "") {
  375. if (filesList[i].FileType == "png" || filesList[i].FileType == "jpg") {
  376. DocumentGroup = "Image";
  377. }
  378. else if (filesList[i].FileType == "xlsx" || filesList[i].FileType == "csv") {
  379. DocumentGroup = "Excel";
  380. }
  381. else if (filesList[i].FileType == "pdf") {
  382. DocumentGroup = "Pdf";
  383. }
  384. else if (filesList[i].FileType == "docx") {
  385. DocumentGroup = "Word";
  386. }
  387. else if (filesList[i].FileType == "mp4") {
  388. DocumentGroup = "Video";
  389. }
  390. else if (filesList[i].FileType == "mp3") {
  391. DocumentGroup = "Audio";
  392. }
  393. else {
  394. DocumentGroup = "Unknown";
  395. }
  396. }
  397. if (DocumentGroup != "") {
  398. if (DocumentGroup == "Unknown")
  399. documentImage = 'tenants/default/documenttypes/unknown.png';
  400. else if (DocumentGroup == "Image") {
  401. var byteCharacters = atob(filesList[i].FileData);
  402. var byteNumbers = new Array(byteCharacters.length);
  403. for (var k = 0; k < byteCharacters.length; k++) {
  404. byteNumbers[k] = byteCharacters.charCodeAt(k);
  405. }
  406. var byteArray = new Uint8Array(byteNumbers);
  407. var fileTemp = new Blob([byteArray], { type: filesList[i].DocumentGroup + '/' + filesList[i].FileType + ';base64' });
  408. imgSrc = URL.createObjectURL(fileTemp);
  409. documentImage = imgSrc;
  410. }
  411. else if (DocumentGroup == "Excel")
  412. documentImage = 'tenants/default/documenttypes/excel.png';
  413. else if (DocumentGroup == "Pdf")
  414. documentImage = 'tenants/default/documenttypes/pdf.png';
  415. else if (DocumentGroup == "Word")
  416. documentImage = 'tenants/default/documenttypes/word.png';
  417. else if (DocumentGroup == "Video")
  418. documentImage = 'tenants/default/documenttypes/video.png';
  419. else if (DocumentGroup == "Audio")
  420. documentImage = 'tenants/default/documenttypes/audio.png';
  421. }
  422. instance.itemid++;
  423. var docFileName = filesList[i].FileName;
  424. var name = docFileName;
  425. var html = '<li class="list-group-item b-a clear pl-0 pr-0" style="border: none !important">' +
  426. '<span id="fileuploads_' + formpropertyid + '_' + instance.itemid + '" class="block fileuploads_' + instance.itemid + ' filename">' +
  427. '<span class="pull-left col-sm-12 pl-0 pr-0">' +
  428. '<span class="fa fa-trash-o fa-lg text-danger mr-15" style="cursor:pointer" ; href="javascript:;" onclick="javascript:Unibase.Platform.Automation.Components.ExternalAttachments.Instance().removeFile(\'' + formpropertyid + '\',' + instance.itemid + ',\'' + name + '\'' + ',' + filesList[i].DocumentFileId + ');" title="Click to Delete"></span>' +
  429. '<img class="mr-20" style="height:35px;width:35px;vertical-align:middle;" onerror="ReloadImage(event)" alt="" src="' + documentImage + '">' +
  430. '<span class="fileName">' + docFileName + '</span>' +
  431. '</span></span></li>';
  432. $('#ulselectedfiles_' + formpropertyid).append(html);
  433. $('#fileuploads_' + formpropertyid).find('.Selectedfile_').removeClass("hidden");
  434. instance.files_array[formpropertyid].push(filesList[i]);
  435. }
  436. }
  437. static Instance() {
  438. if (this.instance === undefined) {
  439. this.instance = new ExternalAttachments();
  440. }
  441. return this.instance;
  442. }
  443. }
  444. Components.ExternalAttachments = ExternalAttachments;
  445. })(Components = Automation.Components || (Automation.Components = {}));
  446. })(Automation = Platform.Automation || (Platform.Automation = {}));
  447. })(Platform = Unibase.Platform || (Unibase.Platform = {}));
  448. })(Unibase || (Unibase = {}));