Built files from Bizgaze WebServer
Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

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