Built files from Bizgaze WebServer
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

filedragndrop.component.js 46KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708
  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 Forms;
  13. (function (Forms) {
  14. let Controls;
  15. (function (Controls) {
  16. class FileDragNDrop extends Unibase.Platform.Core.BaseComponent {
  17. constructor() {
  18. super(...arguments);
  19. this.formPropArray = [];
  20. this.isMultipleArray = [];
  21. this.files_array = [];
  22. this.documentId = [];
  23. this.fileSize = 20971520;
  24. }
  25. init(formpropertyid, prop, callback) {
  26. var container = "control-container-" + prop.UniqueId;
  27. var instance = this;
  28. if (instance.formPropArray.length == 0 || $("#file_" + prop.UniqueId).val() == "") {
  29. instance.itemid = 0;
  30. instance.doc_array = [];
  31. instance.files_array[formpropertyid] = [];
  32. $("#hf_file_" + formpropertyid).val("");
  33. instance.documentId[formpropertyid] = 0;
  34. instance.Singledoc_array = [];
  35. instance.rmvFiles_array = [];
  36. instance.ismultiple = "false";
  37. instance.local_container = container;
  38. instance.singlefile = "";
  39. }
  40. else {
  41. var newValues = instance.formPropArray.find(x => x.formpropertyid = prop.UniqueId);
  42. instance.assignValues(newValues);
  43. }
  44. instance.loadPropertySettings(prop.PropertySettings, prop.UniqueId);
  45. $('#browse_' + prop.UniqueId).click(function () {
  46. $("#file_" + prop.UniqueId).click();
  47. });
  48. instance.dragNdrop(prop.UniqueId);
  49. $("#file_" + prop.UniqueId).change(function () {
  50. instance.UploadFile(prop.UniqueId);
  51. });
  52. Unibase.Platform.Files.Managers.FileManager.Instance().getDocumentTypes().then(function (response) {
  53. instance.documenttypes = response.result;
  54. }).then(function () {
  55. if (callback != null) {
  56. callback();
  57. }
  58. });
  59. }
  60. loadControl(container, prop) {
  61. var instance = this;
  62. instance.local_container = container;
  63. instance.emptydoc_array(container);
  64. var index = instance.formPropArray.findIndex((obj => obj.key == prop.UniqueId));
  65. if (index >= 0) {
  66. instance.formPropArray.splice(index, 1);
  67. }
  68. var regExpr = "";
  69. var ErrMsg = "";
  70. var Isrequired = prop.IsRequired != true ? 'hidden' : '';
  71. var required = prop.IsRequired != true ? '' : 'required';
  72. const { helpTooltipHtml, helpTextHtml } = Unibase.Platform.Forms.Components.FormViewer.Instance().getControlHelpHtml(prop);
  73. var html = "";
  74. var fileControlObj = prop.PropertySettings.find(x => x.ControlPropertyName == "IsFileControl");
  75. if (fileControlObj.ControlPropertyValue == "false") {
  76. html = '<div id="paneldrag" class="col-sm-12 mt-20 drag"><div class="col-sm-12" id="panel"><p>' +
  77. '<div class="text-center"><i class="fa fa-cloud-download fa-3x" aria-hidden="true"></i></div>' +
  78. '<div class="text-center" id="drag" style="font-size:medium">Drag and drop files here</div>' +
  79. '<div class="text-center">Or</div>' +
  80. '</p></div>' +
  81. '<div class="row mb-10" id="UploadDiv_' + prop.DocPropertyName + '">' +
  82. '<input type="text" class="hidden ' + required + '" id="hf_file_' + prop.UniqueId + '" value=""/>' +
  83. '<div class="upload-btn-wrapper text-center container">' +
  84. '<input id="file_' + prop.UniqueId + '" title="" type="file" onclick="this.value=null;" class="hidden d-none fileUpload_ form-control type-control value-control" data-isrequired="' + prop.IsRequired + '" data-propertyname="' + prop.DocPropertyName + '" data-isdefault="' + prop.IsDefault + '" data-propdoctypename="' + prop.DocTypeName + '" data-required="' + prop.IsRequired + '" data-regularexp="' + regExpr + '" data-validatemsg="' + ErrMsg + '" data-formdata="" value="Unibase.Forms.Controls.FileDragNDrop.Instance().fileDragNDropObj(' + prop.UniqueId + ');"/>' +
  85. '<input type="button" value="Browse" class="btn btn-primary btn-lg center-block" id="browse_' + prop.UniqueId + '" />' +
  86. '</div></div><div class="text-center my-1 control-help">' + helpTooltipHtml + helpTextHtml + '</div></div>' +
  87. '<div class="row ml-15 fileuploads_ filename" id="fileuploads_' + prop.UniqueId + '"><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">' +
  88. '<span class="Selectedfile_ text-dark hidden"><h5 class="Selection mb-10 mt-10">Selected Files :</h5> <span class="Selectedfile"></span></span>' +
  89. '</div></div><div class="row col-sm-12 pl-0 pr-0">' +
  90. '<ul id="ulselectedfiles_' + prop.UniqueId + '" class="list-group mb-n mt-n-15 no-border ulselectedfiles col-sm-12 pl-0 pr-0">' +
  91. '<li class="hidden no-border"></li>' +
  92. '</ul></div></div></div>';
  93. }
  94. else {
  95. var hiddenClass = "hidden";
  96. if (prop.IsRequired) {
  97. hiddenClass = "";
  98. }
  99. html = '<h6>' + helpTooltipHtml + prop.LabelName + '<span class="text-danger ' + hiddenClass + '"> *</span> :</h6><div class="row" id="UploadDiv_' + prop.DocPropertyName + '">' +
  100. '<input type="text" class="hidden ' + required + '" id="hf_file_' + prop.UniqueId + '" value=""/>' +
  101. '<div class="btn text-left container">' +
  102. '<input id="file_' + prop.UniqueId + '" title="" type="file" onclick="this.value=null;" class="hidden d-none fileUpload_ form-control value-control" data-isrequired="' + prop.IsRequired + '" data-propertyname="' + prop.DocPropertyName + '" data-isdefault="' + prop.IsDefault + '" data-propdoctypename="' + prop.DocTypeName + '" data-required="' + prop.IsRequired + '" data-regularexp="' + regExpr + '" data-validatemsg="' + ErrMsg + '" data-formdata="" value="Unibase.Forms.Controls.FileDragNDrop.Instance().fileDragNDropObj(' + prop.UniqueId + ');"/>' +
  103. '<input type="button" value="Browse" class="" id="browse_' + prop.UniqueId + '" />' + helpTextHtml +
  104. '</div></div>' +
  105. '<div class="row ml-15 fileuploads_ filename" id="fileuploads_' + prop.UniqueId + '"><div class="row col-sm-12 ml-10 pull-center thumb_doc"><div class="col-sm-12 row pl-0"><div class="input-group">' +
  106. '<span class="Selectedfile_ text-dark hidden"><h6 class="Selection">Selected Files :</h6> <span class="Selectedfile"></span></span>' +
  107. '</div></div><div class="row col-sm-12 pl-0 pr-0">' +
  108. '<ul id="ulselectedfiles_' + prop.UniqueId + '" class="list-group mb-n mt-n-15 no-border ulselectedfiles col-sm-12 pl-0 pr-0">' +
  109. '<li class="hidden no-border"></li>' +
  110. '</ul></div></div></div>';
  111. }
  112. $("#" + container).html(html);
  113. if (prop.PropertySettings[0].ControlPropertyValue == "false") {
  114. $(".drag").css("border", "3px dashed #cccccc");
  115. }
  116. }
  117. loadControlSettings(controlsettingjson, formpropertyid) {
  118. return __awaiter(this, void 0, void 0, function* () {
  119. });
  120. }
  121. loadPropertySettings(propertysettings, formpropertyid) {
  122. var instance = this;
  123. if (propertysettings != null) {
  124. for (var i = 0; i < propertysettings.length; i++) {
  125. var data = propertysettings[i];
  126. if (data.ControlPropertyName == "IsMultiple" && data.ControlPropertyValue != "") {
  127. if (data.ControlPropertyValue == "true") {
  128. instance.ismultiple = "true";
  129. $("#file_" + formpropertyid).attr("multiple", "multiple");
  130. }
  131. else {
  132. instance.ismultiple = "false";
  133. $("#file_" + formpropertyid).removeAttr("multiple");
  134. }
  135. }
  136. }
  137. }
  138. var index = instance.isMultipleArray.findIndex((obj => obj.key == formpropertyid));
  139. if (index >= 0) {
  140. instance.isMultipleArray[index].value = instance.ismultiple;
  141. }
  142. else {
  143. instance.isMultipleArray.push({ "key": formpropertyid, "value": instance.ismultiple });
  144. }
  145. }
  146. bindEditFormDetails(formpropertyid, propval, DocPropertyName) {
  147. var instance = this;
  148. propval = propval.replaceAll("\\", "/");
  149. var documentInfo = "";
  150. var containerid = "control-container-" + formpropertyid;
  151. if (!isNaN(Number(propval))) {
  152. Unibase.Platform.Files.Managers.FileManager.Instance().getDocumentByRefId(Number(propval), formpropertyid).then(function (response) {
  153. documentInfo = response.result;
  154. }).then(function () {
  155. if (documentInfo !== "") {
  156. instance.documentId[formpropertyid] = documentInfo.DocumentId;
  157. instance.bindData(documentInfo, formpropertyid);
  158. }
  159. });
  160. }
  161. else {
  162. documentInfo = JSON.parse(propval);
  163. instance.documentId[formpropertyid] = documentInfo.DocumentId;
  164. instance.bindData(documentInfo, formpropertyid);
  165. }
  166. }
  167. bindData(documentInfo, formpropertyid) {
  168. var instance = this;
  169. var filesList = documentInfo.DocumentFiles;
  170. for (var i = 0; i < filesList.length; i++) {
  171. var isRequired = $("#file_" + formpropertyid).data("isrequired");
  172. if (isRequired) {
  173. $("#file_" + formpropertyid).removeClass("required");
  174. }
  175. filesList[i].DocumentFilePath = filesList[i].DocumentFilePath.replaceAll("\\", "/");
  176. var documentImage = '';
  177. var imgSrc = "";
  178. if (filesList[i].DocumentGroup != "") {
  179. if (filesList[i].DocumentGroup == "Unknown")
  180. documentImage = 'tenants/default/documenttypes/unknown.png';
  181. else if (filesList[i].DocumentGroup == "Image") {
  182. var byteCharacters = atob(filesList[i].FileData);
  183. var byteNumbers = new Array(byteCharacters.length);
  184. for (var k = 0; k < byteCharacters.length; k++) {
  185. byteNumbers[k] = byteCharacters.charCodeAt(k);
  186. }
  187. var byteArray = new Uint8Array(byteNumbers);
  188. var fileTemp = new Blob([byteArray], { type: filesList[i].DocumentGroup + '/' + filesList[i].FileType + ';base64' });
  189. imgSrc = URL.createObjectURL(fileTemp);
  190. documentImage = imgSrc;
  191. }
  192. else if (filesList[i].DocumentGroup == "Excel")
  193. documentImage = 'tenants/default/documenttypes/excel.png';
  194. else if (filesList[i].DocumentGroup == "Pdf")
  195. documentImage = 'tenants/default/documenttypes/pdf.png';
  196. else if (filesList[i].FileType == "csv")
  197. documentImage = 'tenants/default/documenttypes/csv.png';
  198. else if (filesList[i].DocumentGroup == "Word")
  199. documentImage = 'tenants/default/documenttypes/word.png';
  200. else if (filesList[i].DocumentGroup == "Video")
  201. documentImage = 'tenants/default/documenttypes/video.png';
  202. else if (filesList[i].DocumentGroup == "Audio")
  203. documentImage = 'tenants/default/documenttypes/audio.png';
  204. }
  205. instance.itemid++;
  206. var docFilePath = filesList[i].DocumentFilePath.split('/');
  207. var docFileName = docFilePath[docFilePath.length - 1];
  208. var name = filesList[i].DocumentFilePath.split('/');
  209. var tempName = name[name.length - 1].split('.');
  210. name = tempName[tempName.length - 1];
  211. name = encodeURIComponent(name).replace(/\'/g, "%2E");
  212. var html = '<li class="list-group-item b-a clear pl-0 pr-0" style="border: none !important">' +
  213. '<span id="fileuploads_' + formpropertyid + '_' + instance.itemid + '" class="block fileuploads_' + instance.itemid + ' filename">' +
  214. '<span class="pull-left col-sm-12 pl-0 pr-0">' +
  215. '<span class="fa fa-trash-o fa-lg text-danger mr-15" style="cursor:pointer" ; href="javascript:;" onclick="javascript:Unibase.Forms.Controls.FileDragNDrop.Instance().removeFile(' + formpropertyid + ',' + instance.itemid + ',\'' + name + '\'' + ',' + filesList[i].DocumentFileId + ');" title="Click to Delete"></span>' +
  216. '<img class="mr-20" style="height:35px;width:35px;vertical-align:middle;" onerror="ReloadImage(event)" alt="" src="' + documentImage + '">' +
  217. '<span class="fileName">' + docFileName + '</span>' +
  218. '</span></span></li>';
  219. $('#ulselectedfiles_' + formpropertyid).append(html);
  220. $("#hf_file_" + formpropertyid).val("fileexists");
  221. var file = filesList[i];
  222. $('#fileuploads_' + formpropertyid).find('.Selectedfile_').removeClass("hidden");
  223. var item = { Files: file };
  224. instance.doc_array.push(item);
  225. }
  226. }
  227. dragNdrop(formpropertyid) {
  228. var instance = this;
  229. instance.navigationHelper.showLoading();
  230. $('#paneldrag').on('dragover', function (e) {
  231. e.preventDefault();
  232. e.stopPropagation();
  233. });
  234. $('#paneldrag').on('dragenter', function (e) {
  235. e.preventDefault();
  236. e.stopPropagation();
  237. });
  238. $('#paneldrag').on('drop', function (e) {
  239. if (e.originalEvent.dataTransfer) {
  240. if (e.originalEvent.dataTransfer.files.length) {
  241. e.preventDefault();
  242. e.stopPropagation();
  243. if (instance.formPropArray.length > 0) {
  244. var index = instance.formPropArray.findIndex((obj => obj.key == formpropertyid));
  245. if (index >= 0) {
  246. var newValues = instance.formPropArray[index].value;
  247. instance.assignValues(newValues);
  248. }
  249. }
  250. if (instance.ismultiple == "false" && instance.doc_array.length < 1) {
  251. instance.SingleUploadFile(e.originalEvent.dataTransfer.files, formpropertyid);
  252. }
  253. else if (instance.ismultiple == "true" || instance.doc_array.length > 1) {
  254. instance.MultipleUploadFile(e.originalEvent.dataTransfer.files, formpropertyid);
  255. $("#file_" + formpropertyid).attr("multiple", "multiple");
  256. }
  257. else {
  258. instance.SingleUploadFile(e.originalEvent.dataTransfer.files, formpropertyid);
  259. }
  260. }
  261. }
  262. });
  263. window.addEventListener("dragover", function (e) {
  264. e = e || event;
  265. e.preventDefault();
  266. }, false);
  267. window.addEventListener("drop", function (e) {
  268. e = e || event;
  269. e.preventDefault();
  270. }, false);
  271. instance.navigationHelper.hideLoading();
  272. }
  273. UploadFile(formpropertyid) {
  274. var instance = this;
  275. instance.navigationHelper.showLoading();
  276. var prq = instance.isMultipleArray.find(x => x.key == formpropertyid);
  277. instance.ismultiple = prq.value;
  278. if (instance.formPropArray.length > 0) {
  279. var index = instance.formPropArray.findIndex((obj => obj.key == formpropertyid));
  280. if (index >= 0) {
  281. var newValues = instance.formPropArray[index].value;
  282. instance.assignValues(newValues);
  283. }
  284. }
  285. if (instance.ismultiple == "false") {
  286. $('#fileuploads_' + formpropertyid).find('.Selection').text("Selected File :");
  287. $('#fileuploads_' + formpropertyid).find('.Selection').addClass("text-dark");
  288. instance.SingleUploadFile(null, formpropertyid);
  289. }
  290. else if (instance.ismultiple == "true" || instance.doc_array.length > 1) {
  291. instance.MultipleUploadFile(null, formpropertyid);
  292. $("#file_" + formpropertyid).attr("multiple", "multiple");
  293. }
  294. else {
  295. instance.SingleUploadFile(null, formpropertyid);
  296. $('#fileuploads_' + formpropertyid).find('.Selection').text("Selected File :");
  297. $('#fileuploads_' + formpropertyid).find('.Selection').addClass("text-dark");
  298. }
  299. instance.navigationHelper.hideLoading();
  300. }
  301. SingleUploadFile(event, formpropertyid) {
  302. var instance = this;
  303. if (instance.formPropArray.length > 0) {
  304. var index = instance.formPropArray.findIndex((obj => obj.key == formpropertyid));
  305. if (index >= 0) {
  306. var newValues = instance.formPropArray[index].value;
  307. instance.assignValues(newValues);
  308. }
  309. }
  310. var fileUpload = $("#file_" + formpropertyid).get(0);
  311. var files = fileUpload.files;
  312. if (event != null)
  313. files = event;
  314. instance.singlefile = "";
  315. var flag = 0;
  316. if (files.length > 0) {
  317. var html = "";
  318. var count = 0;
  319. for (var i = 0; i < files.length; i++) {
  320. if (files[i].size <= instance.fileSize) {
  321. instance.navigationHelper.showLoading();
  322. flag = 0;
  323. if (flag == 0) {
  324. instance.itemid++;
  325. var imgShow = '';
  326. if (!files[i].type.match('image.*')) {
  327. if (files[i].type.match('pdf.*')) {
  328. imgShow = 'tenants/default/documenttypes/pdf.png';
  329. }
  330. else if (files[i].type.match('csv.*')) {
  331. imgShow = 'tenants/default/documenttypes/csv.png';
  332. }
  333. else if (files[i].type.match('wordprocessingml.*') || files[i].type.match('text.*')) {
  334. imgShow = 'tenants/default/documenttypes/word.png';
  335. }
  336. else if (files[i].type.match('spreadsheetml.*')) {
  337. imgShow = 'tenants/default/documenttypes/excel.png';
  338. }
  339. else if (files[i].type.match('excel.*')) {
  340. imgShow = 'tenants/default/documenttypes/excel.png';
  341. }
  342. else
  343. imgShow = 'tenants/default/documenttypes/unknown.png';
  344. }
  345. else {
  346. var tmppath = URL.createObjectURL(files[i]);
  347. imgShow = tmppath;
  348. }
  349. var filename = encodeURIComponent(files[i].name).replace(/\'/g, "%2E");
  350. html = '<li class="list-group-item b-a clear pl-0 pr-0" style="border: none !important">' +
  351. '<span id="fileuploads_' + formpropertyid + '_' + instance.itemid + '" class="block fileuploads_' + instance.itemid + ' filename">' +
  352. '<span class="pull-left">' +
  353. '<span class="fa fa-trash-o fa-lg text-danger mr-15" style="cursor:pointer" href="javascript:;" onclick="javascript:Unibase.Forms.Controls.FileDragNDrop.Instance().removeFile(' + formpropertyid + ',' + instance.itemid + ',\'' + filename + '\'' + ',' + 0 + ');" title = "Click to Delete"></span>' +
  354. '<img style="height:35px;width:35px;vertical-align:middle;" onerror="ReloadImage(event)" alt="" src="' + imgShow + '">' +
  355. '<span class="ml-20 fileName">' + files[i].name + '</span>' +
  356. '</span></span></li>';
  357. instance.singlefile = files[i];
  358. $('#ulselectedfiles_' + formpropertyid).html(html);
  359. $('#fileuploads_' + formpropertyid).find('.Selectedfile_').removeClass("hidden");
  360. var item = { Files: instance.singlefile };
  361. if (item.Files.size <= instance.fileSize) {
  362. if (instance.Singledoc_array.length = 1) {
  363. instance.Singledoc_array.pop();
  364. instance.Singledoc_array.push(item);
  365. instance.getBase64(item).then(function (response) {
  366. var fileInfo = response;
  367. instance.files_array[formpropertyid] = [];
  368. instance.files_array[formpropertyid].push(fileInfo);
  369. $("#hf_file_" + formpropertyid).val("fileexists");
  370. count++;
  371. if (count == files.length) {
  372. instance.navigationHelper.hideLoading();
  373. }
  374. });
  375. }
  376. }
  377. else {
  378. alert("Cannot Upload File More Than 20MB");
  379. break;
  380. }
  381. }
  382. }
  383. else {
  384. alert("Cannot Upload File More Than 20MB");
  385. break;
  386. }
  387. }
  388. }
  389. var formPropDetails = { "Singledoc_array": instance.Singledoc_array, "doc_array": instance.doc_array, "rmvFiles_array": instance.rmvFiles_array, "itemid": instance.itemid, "ismultiple": instance.ismultiple, "local_container": instance.local_container, "instance.singlefile": instance.singlefile, "documentid": instance.documentId };
  390. if (index >= 0)
  391. instance.formPropArray[index].value = formPropDetails;
  392. else
  393. instance.formPropArray.push({ "key": formpropertyid, "value": formPropDetails });
  394. }
  395. MultipleUploadFile(event, formpropertyid) {
  396. var instance = this;
  397. if (instance.formPropArray.length > 0) {
  398. var index = instance.formPropArray.findIndex((obj => obj.key == formpropertyid));
  399. if (index >= 0) {
  400. var newValues = instance.formPropArray[index].value;
  401. instance.assignValues(newValues);
  402. }
  403. }
  404. var errormsg = $("#" + instance.local_container).parents().find(".bizgaze_FormErrorMessages").attr("id");
  405. var fileUpload = $("#file_" + formpropertyid).get(0);
  406. var files = fileUpload.files;
  407. if (event != null)
  408. files = event;
  409. var file = "";
  410. var flag = 0;
  411. if (files.length > 0) {
  412. var xyz = "";
  413. var html = "";
  414. var count = 0;
  415. instance.navigationHelper.showLoading();
  416. for (var i = 0; i < files.length; i++) {
  417. flag = 0;
  418. if (files[i].size <= instance.fileSize) {
  419. $("#ulselectedfiles_" + formpropertyid + " li").each(function (index, element) {
  420. if (index != 0 && flag == 0) {
  421. var filesSelected = $(this).find(".fileName").text();
  422. if (files[i].name == filesSelected) {
  423. xyz += files[i].name + " ";
  424. MessageHelper.Instance().showError(xyz + " files already exist", "" + errormsg);
  425. flag = 1;
  426. }
  427. }
  428. });
  429. if (flag == 0) {
  430. instance.itemid++;
  431. var imgShow = '';
  432. var filename = files[i].name;
  433. var fileExt = files[i].name.split(".");
  434. if (files[i].type.match('image.*')) {
  435. var tmppath = URL.createObjectURL(files[i]);
  436. }
  437. var docData = instance.documenttypes.find(x => x.documenttypename == fileExt[fileExt.length - 1].toLowerCase());
  438. if (docData != null) {
  439. if (docData.documentgroup == "Pdf") {
  440. imgShow = 'tenants/default/documenttypes/pdf.png';
  441. }
  442. else if (docData.documentgroup == "Image") {
  443. imgShow = tmppath;
  444. }
  445. else if (docData.documentgroup == "Word") {
  446. imgShow = 'tenants/default/documenttypes/word.png';
  447. }
  448. else if (files[i].type.match('csv.*')) {
  449. imgShow = 'tenants/default/documenttypes/csv.png';
  450. }
  451. else if (docData.documentgroup == "Excel") {
  452. imgShow = 'tenants/default/documenttypes/excel.png';
  453. }
  454. else if (docData.documentgroup == "Video") {
  455. imgShow = 'tenants/default/documenttypes/video.png';
  456. }
  457. else if (docData.documentgroup == "Audio") {
  458. imgShow = 'tenants/default/documenttypes/audio.png';
  459. }
  460. }
  461. else
  462. imgShow = 'tenants/default/documenttypes/unknown.png';
  463. filename = encodeURIComponent(filename).replace(/\'/g, "%2E");
  464. html = '<li class="list-group-item b-a clear pl-0 pr-0" style="border: none !important">' +
  465. '<span id="fileuploads_' + formpropertyid + '_' + instance.itemid + '" class="block fileuploads_' + instance.itemid + ' filename">' +
  466. '<span class="pull-left col-sm-12 pl-0 pr-0">' +
  467. '<span class="fa fa-trash-o fa-lg text-danger mr-15" style="cursor:pointer" ; href="javascript:;" onclick="javascript:Unibase.Forms.Controls.FileDragNDrop.Instance().removeFile(' + formpropertyid + ',' + instance.itemid + ',\'' + filename + '\'' + ',' + 0 + ');" title="Click to Delete"></span>' +
  468. '<img class="mr-20" style="height:35px;width:35px;vertical-align:middle;" onerror="ReloadImage(event)" alt="" src="' + imgShow + '">' +
  469. '<span class="fileName">' + files[i].name + '</span>' +
  470. '</span></span></li>';
  471. $('#ulselectedfiles_' + formpropertyid).append(html);
  472. file = files[i];
  473. $('#fileuploads_' + formpropertyid).find('.Selectedfile_').removeClass("hidden");
  474. var item = { Files: file };
  475. instance.doc_array.push(item);
  476. instance.getBase64(item).then(function (response) {
  477. var fileInfo = response;
  478. instance.files_array[formpropertyid].push(fileInfo);
  479. $("#hf_file_" + formpropertyid).val("fileexists");
  480. count++;
  481. if (count == files.length) {
  482. instance.navigationHelper.hideLoading();
  483. }
  484. });
  485. }
  486. }
  487. else {
  488. alert("file cannot be more than 20Mb");
  489. break;
  490. }
  491. }
  492. instance.navigationHelper.hideLoading();
  493. }
  494. var formPropDetails = { "Singledoc_array": instance.Singledoc_array, "doc_array": instance.doc_array, "rmvFiles_array": instance.rmvFiles_array, "itemid": instance.itemid, "ismultiple": instance.ismultiple, "local_container": instance.local_container, "instance.singlefile": instance.singlefile, "documentid": instance.documentId };
  495. if (index >= 0)
  496. instance.formPropArray[index].value = formPropDetails;
  497. else
  498. instance.formPropArray.push({ "key": formpropertyid, "value": formPropDetails });
  499. }
  500. emptydoc_array(container) {
  501. var instance = this;
  502. instance.itemid = 0;
  503. instance.doc_array = [];
  504. instance.Singledoc_array = [];
  505. instance.rmvFiles_array = [];
  506. instance.ismultiple = "false";
  507. instance.local_container = container;
  508. instance.singlefile = "";
  509. }
  510. removeFile(formpropertyid, itemid, name, DocumentFileId) {
  511. name = decodeURIComponent(name.replace(/\%2E/g, "'"));
  512. var instance = this;
  513. var isRequired = $("#file_" + formpropertyid).data("isrequired");
  514. if (instance.formPropArray.length > 0) {
  515. var index = instance.formPropArray.findIndex((obj => obj.key == formpropertyid));
  516. if (index >= 0) {
  517. var newValues = instance.formPropArray[index].value;
  518. instance.assignValues(newValues);
  519. }
  520. }
  521. instance.rmvFiles_array.push({ DocumentFileId: DocumentFileId, name: name });
  522. $("#fileuploads_" + formpropertyid + "_" + itemid).addClass("hidden");
  523. $("#fileuploads_" + formpropertyid + "_" + itemid).parents('.list-group-item').remove();
  524. for (var i = 0; i < instance.doc_array.length; i++) {
  525. var filename = "";
  526. filename = instance.doc_array[i].Files.DocumentFileName;
  527. if (filename == undefined)
  528. filename = instance.doc_array[i].Files.name;
  529. if (filename == name) {
  530. var fileNameWithoutExt = name.split(/\.(?=[^\.]+$)/)[0];
  531. var fileIndex = instance.files_array[formpropertyid].findIndex(x => x.FileName == fileNameWithoutExt);
  532. instance.files_array[formpropertyid].splice(fileIndex, 1);
  533. if (instance.files_array[formpropertyid].length == 0) {
  534. $("#file_" + formpropertyid).val(null);
  535. $("#hf_file_" + formpropertyid).val("");
  536. }
  537. instance.doc_array = $.grep(instance.doc_array, function (value) {
  538. return value != instance.doc_array[i];
  539. });
  540. }
  541. }
  542. for (var j = 0; j < instance.Singledoc_array.length; j++) {
  543. var filename = "";
  544. filename = instance.Singledoc_array[j].Files.DocumentFileName;
  545. if (filename == undefined)
  546. filename = instance.Singledoc_array[j].Files.name;
  547. if (filename == name) {
  548. instance.Singledoc_array = $.grep(instance.Singledoc_array, function (value) {
  549. return value != instance.Singledoc_array[i];
  550. });
  551. }
  552. }
  553. if ($('#ulselectedfiles_' + formpropertyid + ' li').length == 1) {
  554. $('#fileuploads_' + formpropertyid).find('.Selectedfile_').addClass("hidden");
  555. }
  556. if (isRequired) {
  557. var fileArray = instance.files_array[formpropertyid];
  558. var fileCount = $("#ulselectedfiles_" + formpropertyid + " li").length;
  559. if (fileArray.length == 0) {
  560. if (fileCount == 1) {
  561. $("#file_" + formpropertyid).addClass("required");
  562. }
  563. }
  564. }
  565. }
  566. getFormData(formpropertyid) {
  567. var index = Unibase.Forms.Controls.FileDragNDrop.Instance().formPropArray.findIndex((obj => obj.key == formpropertyid));
  568. if (index >= 0) {
  569. var documentArray = Unibase.Forms.Controls.FileDragNDrop.Instance().formPropArray[index].value.doc_array;
  570. var fileData = new FormData();
  571. for (var i = 0; i < documentArray.length; i++) {
  572. var files = documentArray[i].Files;
  573. fileData.append(files.name, files);
  574. }
  575. }
  576. return fileData;
  577. }
  578. fileDragNDropObj(formpropertyid) {
  579. var instance = this;
  580. var fileArray = [];
  581. fileArray = instance.files_array[formpropertyid];
  582. for (var i = 0; i < instance.rmvFiles_array.length; i++) {
  583. var documentFileId = instance.rmvFiles_array[i].DocumentFileId;
  584. if (documentFileId != 0) {
  585. var fileReq = {
  586. FileId: documentFileId,
  587. FilePath: instance.rmvFiles_array[i].name,
  588. };
  589. fileArray.push(fileReq);
  590. }
  591. }
  592. var fileObj = [...fileArray];
  593. fileObj.unshift({
  594. FileId: instance.documentId[formpropertyid],
  595. });
  596. return fileObj;
  597. }
  598. saveFile(formpropertyid, callback) {
  599. var instance = this;
  600. var fileArray = [];
  601. fileArray = instance.files_array[formpropertyid];
  602. var count = 0;
  603. if (fileArray != undefined && fileArray.length > 0) {
  604. instance.navigationHelper.showLoading();
  605. for (var i = 0; i <= fileArray.length - 1; i++) {
  606. var file = fileArray[i];
  607. Unibase.Platform.Files.Managers.FileManager.Instance()._tempFileSave(file).then((res) => {
  608. if (res.status == Unibase.Data.Status.Success) {
  609. var result = res.result;
  610. if (result != null) {
  611. fileArray[count].FileData = "";
  612. fileArray[count].Status = "Uploaded";
  613. count++;
  614. if (count == fileArray.length) {
  615. if (callback) {
  616. callback();
  617. }
  618. }
  619. }
  620. }
  621. else {
  622. fileArray[count].Status = "Failed";
  623. instance.navigationHelper.hideLoading();
  624. Unibase.Platform.Forms.Components.FormViewer.Instance().showError("File Upload Failed");
  625. }
  626. });
  627. }
  628. }
  629. else {
  630. if (callback) {
  631. callback();
  632. }
  633. }
  634. }
  635. assignValues(newValues) {
  636. var instance = this;
  637. instance.itemid = newValues.itemid;
  638. instance.doc_array = newValues.doc_array;
  639. instance.Singledoc_array = newValues.Singledoc_array;
  640. instance.rmvFiles_array = newValues.rmvFiles_array;
  641. instance.ismultiple = newValues.ismultiple;
  642. instance.local_container = newValues.local_container;
  643. instance.singlefile = newValues.singlefile;
  644. }
  645. getBase64(item) {
  646. return __awaiter(this, void 0, void 0, function* () {
  647. var fileName = "";
  648. fileName = item.Files.DocumentFileName;
  649. if (fileName == undefined)
  650. fileName = item.Files.name;
  651. var refId = 0;
  652. let file = item.Files;
  653. let fileInfo = item.Files.name.split('.');
  654. let fileType = ".unknown";
  655. if (fileInfo.length > 0) {
  656. fileType = fileInfo[fileInfo.length - 1];
  657. fileInfo.splice(fileInfo.length - 1, 1);
  658. fileName = fileInfo.join('.');
  659. }
  660. return new Promise((resolve, reject) => {
  661. let content = '';
  662. const reader = new FileReader();
  663. reader.readAsDataURL(item.Files);
  664. reader.onloadend = function () {
  665. var base64String = reader.result.toString().replace(/^data:.+;base64,/, '');
  666. var fileReq = {
  667. FileData: base64String,
  668. FileName: fileName,
  669. FileType: fileType,
  670. RefId: refId,
  671. ByteData: null,
  672. Status: "Converted",
  673. FilePath: "_files/documents/" + Unibase.Platform.Membership.Infos.Identity.getCurrentUser().tenantId + "/" + Unibase.Forms.Controls.FileDragNDrop.Instance().generateUUID().trim() + "/" + fileName + "." + fileType
  674. };
  675. resolve(fileReq);
  676. };
  677. reader.onerror = function (e) {
  678. reject(e);
  679. };
  680. });
  681. });
  682. }
  683. generateUUID() {
  684. var d = new Date().getTime();
  685. var d2 = ((typeof performance !== 'undefined') && performance.now && (performance.now() * 1000)) || 0;
  686. return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
  687. var r = Math.random() * 16;
  688. if (d > 0) {
  689. r = (d + r) % 16 | 0;
  690. d = Math.floor(d / 16);
  691. }
  692. else {
  693. r = (d2 + r) % 16 | 0;
  694. d2 = Math.floor(d2 / 16);
  695. }
  696. return (c === 'x' ? r : (r & 0x3 | 0x8)).toString(16);
  697. });
  698. }
  699. static Instance() {
  700. if (this._instance === undefined)
  701. this._instance = new FileDragNDrop();
  702. return this._instance;
  703. }
  704. }
  705. Controls.FileDragNDrop = FileDragNDrop;
  706. })(Controls = Forms.Controls || (Forms.Controls = {}));
  707. })(Forms = Unibase.Forms || (Unibase.Forms = {}));
  708. })(Unibase || (Unibase = {}));